ES6的一些筆記(一)

變量的聲明關(guān)鍵字


varletswift很像,但是考慮到語言先后的時間swift是在模仿js,在swift語言中可以根據(jù)編譯器自動判斷變量的數(shù)據(jù)類型,而在js中也完全不用管數(shù)據(jù)類型,直接使用就好。

var:

varjs的語法的ES5規(guī)范中并沒有塊級作用域的說法,這一點有區(qū)別于其他語言,所以在一段代碼中如果聲明了var變量那么這個變量就是全局的在if...else的判斷{}中與for循環(huán)中var所聲明的變量也是全局的。

var的變量提升,在js的語言中因為變量和函數(shù)的變量提升,所以可以先調(diào)用,后聲明如下:

 // 這個時候輸出的是undefined,表示的是一個未初始化的空值,在其他語言中有可能就直接找不到這個變量而報錯了。
  console.log(a); 
  var a = 20;

但是在其他部分語言中是不可以先使用后聲明的包括ES6中新聲明的let也不可以所以不建議利用變量提升的寫法,盡量先聲明在使用。

var聲明的變量屬于全局變量,會掛載到window上。

let:

let關(guān)鍵字是ES6中新出現(xiàn)的,在swiftvar是變量而let是常量。

jslet在一段代碼中只可以出現(xiàn)一次,而所謂的一段代碼就是一個{},在一個{}let一旦出現(xiàn),它所聲明的變量就只可以有一份,不允許變量提升,也不可以重復(fù)聲明(形參同變量名也不可以),并且在{}作用域消失后,let的變量釋放,即外部作用域不可以訪問內(nèi)部作用域的值。

let聲明的變量屬于局部變量,不會掛載到window上。

const:

第一次接觸const是在C語言中,JSconst用法與C基本相同。
const作用是修飾的變量值本身不可以被改變,值得注意的是變量中如果儲存的是復(fù)雜數(shù)據(jù)類型如對象,那么變量本身所儲存的是變量的地址,地址不可以改變但是地址內(nèi)所儲存的數(shù)據(jù)掛載的屬性是可以改變的。代碼如下:

 const a = "張三";
a = "李四";   // 這個時候 會報錯 因為a的值不可以修改.

const obj = new Object();
obj.name = "object";  // 可以修改 因為const所修飾變量obj本身的地址沒有改變

const基本與let使用方式相同。

總結(jié):

var當(dāng)需要用到全局變量的時候使用。
let需要局部變量的時候使用。
const定義一個值不允許改變的時候使用。
在代碼塊中盡可能的使用let,變量與函數(shù)盡可能的先聲明在調(diào)用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容