ES6學習筆記

代碼段

一個script標籤就是一個代碼段。數組

特色:函數

1.獨立 當一個一個script裏的內容出錯以後,並不會影響其餘script塊裏的內容,其餘的仍可以正常運行。spa

2.共享,在一個代碼段裏定義的數據,在以後的script裏仍能調用。code

3.代碼段的實現順序只與script標籤的順序有關,依次從上往下執行。cdn

變量

聲明變量有三種方式對象

var 由於script的預編譯機制,用var聲明的變量會被提高到該代碼塊最前處。{blog

聲明和定義的區別:
var a; 這是聲明一個變量a。
var a=1; 在聲明變量的同時給變量賦值,這叫作定義變量。

一樣的,函數內的var會被提高到函數內的第一行。對於函數的提高,須要注意只有函數聲明會被提高,函數表達式並不會。{
var b = function(){}  函數表達式
function m(){}          函數聲明
複製代碼

} }ip

let let並不會被預編譯提高,可是let只在當前的代碼塊裏有效,不能跨script代碼段調用。內存

暫時性死區:在let聲明變量以前,不能使用該變量
 tmp=233; let tmp;會報錯,由於在聲明tmp以前,不能使用tmp。
 一樣,若是是let聲明在局部做用域中,在這以前若是在全局做用域裏使用也會報錯。
複製代碼

const 不經常使用,下次再說。作用域

數據的存儲與賦值

js裏的數據類型分兩種:

1.基本數據類型(棧區)
    數值,字符串,布爾,undefined,null。
 2.引用數據類型(堆區)
    對象object,函數,數組。
複製代碼

判斷數據的類型的方法:typeof var a =1; console.log(typeof a);

變量是用來存儲數據的,由變量名和數據組成,分別在堆和棧裏建立一個內存空間,棧裏放數據,堆裏放棧裏數據位置的地址。例如寫 var a=2;

賦值操做:{

如圖所示,將a賦值給b的操做是給b也建立一個空間,將a的數據複製一份給b,並非讓懟裏面存儲的地址指向a的地址。
對於基本數據類型而言:
A == B

比較a,b的類型是否一致。一致,直接比較他們保存在棧區的值。

若是類型不一致,先進行數據類型的轉換。而後再比較。

A === B

先作類型判斷,若是一致(不一致,直接false),再作值的比較,相同爲true,不等爲false。
對於引用數據類型
A==B

沒有類型比較這一步(都是一個類型,引用類型)。直接判斷保存在棧區的值(保存在堆區的真實的數據的地址)是否一致。

A === B 與A == B是等價的。

建議:若是你但願對兩個值進行比較,請你必定要使用:

===
把字面量寫在 左邊。
複製代碼

}

變量的做用域:

1.全局變量 直接設置在代碼塊中的變量,做用於整個代碼塊。

2.局部變量 設置在函數中的變量被稱做局部變量,其做用域只在函數內,在函數外的代碼塊中並不能被調用。

3.就近原則 對於同一個變量的屢次賦值,會根據就近原則決定。

首先函數b內部的var a被提高到函數第一行,因此第一次輸出時a沒有賦值默認underfined。
b內的a只做用在函數b內,可是由於函數內的var a 要比外面的var a近 ,因此內部的把外部的覆蓋了。
複製代碼

塊級做用域: 在script中,並無塊級做用域{},只有函數的{}能劃分塊級做用域。

相關文章
相關標籤/搜索