JavaScript----ES6常變量和關(guān)鍵字

let

  • ES5以前用var定義變量
  • ES6開始用let定義變量
  • 區(qū)別
  • let重復(fù)定義變量不會(huì)覆蓋,會(huì)報(bào)錯(cuò)
let a = 1;
let a = 2;//報(bào)錯(cuò)
  • let定義的變量不會(huì)預(yù)解析
console.log(a);//報(bào)錯(cuò)
let a = 1;
  • let定義的變量只在當(dāng)前代碼塊中有效,在代碼塊外界使用會(huì)報(bào)錯(cuò)
for(let i = 0;i < 5;i++){
    console.log(1);
}
console.log(i);//報(bào)錯(cuò)
  • let定義的變量有暫時(shí)性死區(qū)(綁定在當(dāng)前代碼塊,不受外界影響), 在聲明前使用定義的變量會(huì)報(bào)錯(cuò)
var tmp = 123;

if (true) {
  tmp = 'abc'; // 報(bào)錯(cuò)
  let tmp;
}
  • 一些隱蔽的死區(qū)
function (x = y,y = 1){
  ..................
}
let x = x;
  • let在全局作用域定義的變量不會(huì)成為全局屬性
var a = 1;
// 如果在 Node 的 REPL 環(huán)境,可以寫成 global.a
// 或者采用通用方法,寫成 this.a
window.a // 1

let b = 1;
window.b // undefined

塊級(jí)作用域

  • ES5和ES6的區(qū)別
    • 以下為阮一峰的案例
function f() { console.log('I am outside!'); }

(function () {
  if (false) {
    // 重復(fù)聲明一次函數(shù)f
    function f() { console.log('I am inside!'); }
  }

  f();
}());
  • ES5語(yǔ)法的實(shí)際執(zhí)行后的代碼
function f() { console.log('I am outside!'); }

(function () {
function f() { console.log('I am inside!'); }
  if (false) {
  }

  f(); //I am inside!
}());
  • ES6的實(shí)際執(zhí)行代碼
function f() { console.log('I am outside!'); }

(function () {  
  var f = undefined
  if (false) {
    // 重復(fù)聲明一次函數(shù)f
    f = function() { console.log('I am inside!'); }
  }

  f();//報(bào)錯(cuò)
}());
  • 注意點(diǎn):
    • ES6的函數(shù)聲明和var關(guān)鍵字有點(diǎn)像, 會(huì)將名稱提升到全局作用域或者函數(shù)作用域的頭部
    • 為了解決這種差異, 我們盡量用函數(shù)表達(dá)式的方式來(lái)定義一個(gè)函數(shù)
    • ES6 的塊級(jí)作用域允許聲明函數(shù)的規(guī)則,只在使用大括號(hào)的情況下成立,如果沒有使用大括號(hào),就會(huì)報(bào)錯(cuò)。

const

  • const定義一個(gè)常量, 一旦定義了就不能被更改
  • 注意點(diǎn)和let一樣
    • 注意點(diǎn)補(bǔ)充: const定義的變量其實(shí)是一個(gè)指針,指向存儲(chǔ)數(shù)據(jù)的地址,指針的指向不能改變,但是指向變量的內(nèi)部的數(shù)據(jù)可以改變
const arr = [1, 3];
// arr = [2, 4]; // 改變指向
arr[0] = 666; // 指向內(nèi)存中保存的數(shù)據(jù)可以改變
arr.push(777);
console.log(arr);//[666, 3, 777]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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