let
一.基本用法
es6新增了let和const命令,用來宣告變數,let的用法類似於var,但是所有的宣告變數,只在let所在的**塊內有效。
console.log(b); //10
console.log(a);//uncaught referenceerror: a is not defined
二.不存在變數提公升
var 命令會發生變數提公升,就是變數可以在宣告之前使用,值為undefined
console.log(a);//undefined
var a = 2;
console.log(a);//2
而let賓亮未宣告之前使用將會報錯
console.log(b); // 報錯referenceerror
let b = 2;
console.log(b)//2
三、不允許重複宣告
let不允許在相同的作用域內重複宣告同乙個變數,const宣告的常量也不允許重複宣告
function fun()
// 報錯 uncaught syntaxerror: identifier 『a』 has already been declared
四、暫時性死區
當塊級作用域存在let命令,它所宣告的變數會「繫結在這個區域」,不受外部影響。使用let命令宣告變數之前,該變數都是不可用的。這在語法上,稱為「暫時性死區」(temporal dead zone,簡稱 tdz)。
var tmp = 10;
if (true)
解析:由於存在全域性變數tmp,但是塊級作用域內let又宣告了乙個區域性變數tmp,同乙個作用域內,不能重複宣告同乙個變數,所以在let宣告前,對tmp進行賦值則報錯
const
1.const宣告乙個唯讀的常量,一旦宣告,常量的值不能改變。
const pi = 3.14;
console.log(pi);
pi = 3;
console.log(pi);// uncaught typeerror: assignment to constant variable.
2.對於const,只宣告不賦值,就會報錯了。
const a;
console.log(a);//uncaught syntaxerror: missing initializer in const declaration
3.const命令宣告的常量不提公升,也存在暫時性死區,只能在宣告的位置後面使用
if (true)
if (true)
4.const的作用域與let命令相同:只在宣告所在的塊級作用域內有效
f (true)
console.log(b);//報錯
if (true)
總結:
var:變數提公升(無論宣告在何處,都會被提至其所在作用於的頂部)
let:無變數提公升(未到let宣告時,是無法訪問該變數的)
const:無變數提公升,宣告乙個基本型別的時候為常量,不可修改;宣告物件可以修改
ES6之let和const命令(筆記)
1 let命令 console.log a undefined console.log b 112 const命令 3 設定跨模組常量模組 export consta 1 import as constant from constants console.log constant.a import ...
ES6學習 let和const命令
1.let命令 所宣告的變數命令所在 塊有效 a referenceerror a is not defined.b 1for迴圈的計數器,就很適合let命令 for let i 0 i arr.length i console.log i referenceerror i is not defin...
ES6 一 let和const命令
在js中是沒有塊級作用域的,var 宣告的變數作用域是整個函式體,而let可以起到這一作用 console.log b 2 console.log a a is not defind 而let可以起到這一作用啊在js中變數和函式的宣告會提公升到當前作用域最頂部執行。這樣就會出現問題。var a 函式...