ES6入門教程之let和const命令詳解

2022-10-06 23:18:19 字數 1726 閱讀 9986

前言

在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,宣告的變數僅在塊級作用域內有效...