JavaScript基礎 -- 筆記(二)

7. 數組

數組是指一組數據的集合,其中的每個數據被稱作元素,在數組中可以存放任意類型的元素,數組是一種將一組數據存儲在單個變量名下的方式。

7.1 數組的創建方式

js中創建數組有兩種方式:

  • 利用new 創建數組
  • 利用數組字面量創建數組

7.1.1 利用 new 創建數組

var arrayName = new Array(); //創建一個新的空數組

7.1.2 利用數組字面量創建數組

//1. 使用數組字面量創建空數組
var arrayName = [];
//2. 使用數組字面量創建並初始化數組
var arrayName = ['name1', 'name2', 'name3'];
  • 數組的字面量是方括號[]
  • 聲明數組並賦值稱爲數組的初始化

7.2 獲取數組元素

7.2.1 數組的索引

索引[下標]:用來訪問數組元素的序號(數組下標從0開始)

7.2.2 遍歷數組

循環遍歷

<script>
        //遍歷數組
        var arr = ['red', 'green', 'blue'];
        for(var i = 0; i < 3; i++){
            console.log(arr[i])
        }
</script>
/*
red
green
blue
*/

7.2.3 數組長度

使用“數組名.length”可以訪問數組元素的數量(數組長度)。

    <script>
        //數組長度
        var arr = ['red', 'green', 'blue'];
        console.log(arr.length)
    </script>
    // 3

7.2.4 增加數組元素

  1. 修改length

     <script>
        var arr = ['red', 'green', 'blue'];
        console.log(arr.length);
        arr.length = 5;
        console.log(arr);
     </script>
    /*
    3
    (5) ["red", "green", "blue", empty × 2]
    */
    

    length 屬性是可讀寫的,默認值爲 undefined

  2. 修改索引號

    <script>
        var arr = ['red', 'green', 'blue'];
        console.log(arr.length);
        arr[3] = 'pink';
        console.log(arr.length);
        console.log(arr);
    </script>
    /*
    3
    4
    (4) ["red", "green", "blue", "pink"]
    */
    

8. 函數

函數:封裝了一段可被重複執行的代碼塊

<script>
    function name(參數列表){
        //函數體
    }        
</script>

8.1 函數的參數

實參 :函數調用時 傳入的 參數

形參: 函數定義時 參數列表內的元素

  1. 如果實參個數 = 形參個數 正常運算
  2. 如果實參個數 > 形參個數 多餘參數不參與運算
  3. 如果實參個數 < 形參個數 多餘形參爲undefined 輸出 NaN

8.2 return

return 終止函數並且只能返回一個值

8.3 arguments

arguments ,所有函數內置的對象,存儲了傳遞的所有實參

arguments是一個僞樹組,因此可以遍歷,

  • 具有length 屬性
  • 按索引方式存儲數據
  • 不具有數組的push,pop等方法

8.4 函數表達式 :匿名函數

var 變量名 = function(參數列表){
    //函數體
}

9. 作用域

通常來說, 一段程序代碼中所用到的名字並不總是有效和可用的,而限定這個名字的可用性的代碼範圍就是這個名字的作用域。作用域的使用提高了程序邏輯的局部性,增強了程序的可靠性,減少了名字衝突。

全局作用域:整個script標籤內 或者是一個單獨的is文件

局部作用域: 在函數內部就是局部作用據

9.1 全局變量

在全局作用域下聲明的變量叫做全局變量(在函數外部定義的變量):

  • 全局變量在代碼的任何位置都可以使用
  • 在全局作用域下var聲明的變量是全局變量
  • 特殊情況下,在函數內不使用var聲明的變量也是全局變量(不建議使用)

9.2 局部變量

在局部作用域下聲明的變量叫做局部變量(在函數內部定義的變量):

  • 局部變量只在該函數內部使用
  • 在函數內部var聲明的變量是局部變量
  • 函數的形參實際上就是局部變量

9.3 作用域鏈

  • 只要是代碼,就至少有一個作用域
  • 寫在函數內部的爲局部作用域
  • 函數內部如果還有函數,那麼在這個作用域中又產生了一個作用域
  • 根據內部函數可以訪問外部函數變量的機制,用鏈式產找決定哪些數據能被內部函數訪問,就稱爲作用域鏈

10. 預解析

JavaScript代碼是由瀏覽器中的JavaScript解析器來執行的。JavaScript解析器在運行JavaScript代碼時候分爲兩步:預解析和代碼執行

  1. 預解析 js引擎 會把js 裏面所有 var 還有 function 提升到當前作用域的最前面
  2. 代碼執行 按照代碼書寫的順序從上到下執行

預解析 分爲 變量預解析(變量提升)和 函數預解析(函數提升)

  • 變量提升 就是把所有的變量聲明提升到當前作用域的最前面 不提升複製操作
  • 函數提升 就是把所有的函數聲明提升到當前作用域的最前面 不調用函數

11. JavaScript 對象

11.1 對象

萬物皆對象

11.2 創建對象的三種方式

11.2.1 字面量創建對象

對象字面量:就是花括號{}裏面包含了表達這個具體事物(對象)的屬性和方法

var obj = {} //創建一個空對象

var obj1 = {
    uname:"name",
    sex:"man",
    say: function(){
        console.log('hello world');
    }
} //創建了一個對象
//屬性/方法 鍵值對 賦值
// 屬性/方法之間 , 隔開
// 方法 使用匿名函數

調用方式

// 1
obg1.uname
// 2
obj1['uname']
// 3
obj1.say()

11.2.2 new Object

var obj = new Object(); // 創建了一個空的對象
obj.uname = 'name';
obj.sex = 'man';
obj.say = function(){
    console.log('hello world');
}

11.2.3 構造函數

構造函數:一種特殊的函數,主要用來初始化對象,即爲對象成員變量賦初始值,與 new 搭配使用

function 構造函數名(){
    this.屬性 =;
    this.方法 = function(){}
}
var 變量 = new 構造函數名();
  • 構造函數首字母大寫
  • 構造函數不需要return

11.3 內置對象

js中的對象分爲三種:自定義對象、內置對象、瀏覽器對象

內置對象是js封裝好的常用或最基本的功能: Math、Date、 Array、String等

MDNW3C

11.3.1 Math對象

Math.PI      //3.1415926
Math.max()   //最大值
Math.floor() //向下取整
Math.ceil()  //向上取整
Math.round() //四捨五入
Math.abs()   //絕對值

Math.random() //隨機數

11.3.2 日期對象

構造函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章