前言
在j**ascript中,我們都知道使用var來宣告變數。j**ascript是函式級作用域程式設計客棧,函式內可以訪問函式外的變數,函式外不能訪問函式內的變數。
函式級作用域會導致一些問題就是某些**塊內的變數會在全域性範圍內有效,這我們是非常熟悉的:
for (var i = 0; i < 10; i++)
console.log(i); //10
if(true)
consol //20
在es6中增加了let(變數)和const(常量)來宣告變數,使用的是塊級作用域,變數宣告只在**塊內有www.cppcns.com效,下面來看看詳細的介紹:
let命令
es6新增了let命令用於宣告變數。它的用處和var很相似,只不過let所宣告的變數只在let命令所在的**塊內有效。
看下下面**:
alert( a ); // referenceerror: a is not defined
alert( b ); //9
再看看下面**:
var a = ;
for(var i = 0; i < 10; i++) ;
} a[6](); //9
而如果使用let宣告的話,最後輸出的值是「6」。**如下:
var a = ;
for (var i = 0; i &l 10; i++) ;
}a[6](); //6
此外,let宣告的變數不會提公升。看下下面的**片段。
function do_someting()
最後,let不允許在相同的作用域內,重複宣告同乙個變數。
// 報錯
// 報錯
let實際上是j**ascript增加的塊級作用域。
function foo()
console.log( n ); //6
}上面**有兩個**塊,都宣告了n變數,執行後輸出的是6。這表明外層**塊不受內層**塊的影響。如果,改成使用var定義變數n的話,最後輸出的就是10.
另外,es6還規定,函式本身的作用域在其所在的**塊作用域之內。
function f()
(function ()
} f(
}());
上面的**片段,在es5中執行會得到「iam inside」, 但是在es6中執行,則會得到「iam outside」。
const命令
const是用來宣告常量的。一旦宣告,其值就不能改變。
const pi = 3.1415;
console.log( pi ); //pi
pi = 3;
console.log( pi );
const pi = 3.1;
console.log( pi );
有一點需要我們注意的是,對常量的重複定義不會報錯,它只會默默的失敗。
const的作用域與let命令相同:即只在宣告所在的塊級作用域內有效。
if(condition)
// 常量max在此處不可見(或者說不可得)
此外,const常量也不可重複宣告。
var message = "hello!";
let age = 25;
//以下兩行都會報錯
const message = "goodbye!";
const age = 30;
總結本文標題: es6入門教程之let和const命令詳解
本文位址:
ES6入門教程之Class和Module詳解
一 class es6引入了class 類 這個概念,作為物件的模板。通過class關鍵字,可以定義類。定義類 class point tostring var point new point 2,3 point.tostring 2,3 在上面的 片段裡,先是定義了乙個point類,裡面還有乙個c...
es6快速入門學習 let和const
let 命令申明不會提公升,作用域在塊級程式碼內 if true console.log b 3console.log a 報錯 a is not defined 暫時性死區 塊級作用域內存在let,它所宣告的變數就會 繫結 在此區域,不受外界影響 let c 10 function fn fn c...
《ES6標準入門》(一)let和const
一 let命令 1 let的作用域只在 塊內,塊外無效 var全域性有效 var a for var i 0 i 10 i a 6 對於這段 變數i是var宣告的,在全域性範圍內有效,所以每一次迴圈,新的i值都會覆蓋舊值,導致最後輸出的是最後一輪的i值 如果使用let,宣告的變數僅在塊級作用域內有效...