(宣告, 本文的所有**均在node的最新穩定版本v4.4.3中執行的, 如果在瀏覽器中執行請把js的執行環境提公升為es6)
以前一直用var定義變數, 現在有了兩種新的定義變數的方式, 1:let, 2:const;本文大概概括下使用let和const定義變數有哪些好處;
使用var宣告變數,存在宣告提前的問題, 輸出的tmp為"undefined":
}如果我們把定義tmp的方式改為let呢? 那麼tmp輸出的結果為當前的日期。f();
}
括號中;let和const不但擁有塊狀作用域, 還也不存在宣告提前這個玩意兒, 以下**會報referenceerror錯let tmp = "
hello world";}}
f();
}
}使用let宣告的元素作用域更加明確, 不會出現作用域混亂的情況, 可以減少bug的產生;
console.log(foo);以上這段**相當於是iife(立即執行函式表示式), 效果和以下的相同;}
());再來猜猜這個的結果是什麼,(var 形式宣告的變數會提公升到{}外面去哦 , {}形式的塊狀作用域相當於是if(true)的寫法):console.log(foo);
}
console.log(foo);view code}
使用let宣告的變數不能重複宣告,否則會出現一下錯誤:
syntaxerror: identifier '注意: 在全域性下用let宣告變數和用var宣告變數還是有區別的:a' has already been declared
使用const定義的常量, 而且定義一次以後不能再進行更改, 否者會報錯;
使用const定義的常量, 擁有let一樣的特性(無宣告提前,有塊狀作用域, 重複宣告);
但是要注意, 如果給常量定義的是物件,只要該物件指向在記憶體中的位址不發生改變, 資料可以隨便改的(這涉及到計算機的傳值和傳址);
物件:
;陣列: 這些新語法讓js更加規範, 也更加適合大專案, 我彷彿猜到以後要用private和public宣告變數了....( ╯□╰ )foo.bar = 1111
; console.log(foo.bar);
}
參考:阮一峰:
nono
出處:287101329
18101055830
ES6新特性 let和const的使用
宣告,本文的所有 均在node的最新穩定版本v4.4.3中執行的,如果在瀏覽器中執行請把js的執行環境提公升為es6 以前一直用var定義變數,現在有了兩種新的定義變數的方式,1 let,2 const 本文大概概括下使用let和const定義變數有哪些好處 使用var宣告變數,存在宣告提前的問題,...
ES6新特性 let的使用
css doctype html en utf 8 viewport content width device width,initial scale 1.0 document title head es6新增了let命令,用來宣告變數 它的用法類似var,但所宣告的變數,只在let命令所在的 塊內...
es6新特性 ES6新特性(一)
var 1 var宣告的是函式作用域 區域性 但在if for等定義的變數是全域性的 2 var 具有變數提公升,預解析 3 在同乙個作用域下,var可以宣告多次 4 var 宣告的變數會掛載到window上 let1 let不存在變數提公升,在變數使用之前,必須要先宣告 2 let在同一作用域下,...