您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)ES6中l(wèi)et和const命令有什么用,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
前言
在javascript中,我們都知道使用var來(lái)聲明變量。javascript是函數(shù)級(jí)作用域,函數(shù)內(nèi)可以訪問(wèn)函數(shù)外的變量,函數(shù)外不能訪問(wèn)函數(shù)內(nèi)的變量。
函數(shù)級(jí)作用域會(huì)導(dǎo)致一些問(wèn)題就是某些代碼塊內(nèi)的變量會(huì)在全局范圍內(nèi)有效,這我們是非常熟悉的:
for (var i = 0; i < 10; i++) { console.log(i); // 0,1,2...,9 } console.log(i); //10 if(true){ var s = 20; } console.log(s); //20
在es6中增加了let(變量)和const(常量)來(lái)聲明變量,使用的是塊級(jí)作用域,變量聲明只在代碼塊內(nèi)有效,下面來(lái)看看詳細(xì)的介紹:
let命令
ES6新增了let命令用于聲明變量。它的用處和var很相似,只不過(guò)let所聲明的變量只在let命令所在的代碼塊內(nèi)有效。
看下下面代碼:
{ let a = 10; var b = 9; } alert( a ); // ReferenceError: a is not defined alert( b ); //9
再看看下面代碼:
var a = []; for(var i = 0; i < 10; i++) { var c = i; a[i] = function() { console.log( c ); }; } a[6](); //9
而如果使用let聲明的話,最后輸出的值是“6”。代碼如下:
var a = []; for (var i = 0; i < 10; i++) { let c = i; a[i] = function() { console.log( c ); }; } a[6](); //6
此外,let聲明的變量不會(huì)提升??聪孪旅娴拇a片段。
function do_someting() { console.log( a ); //ReferenceError let a = 2; }
最后,let不允許在相同的作用域內(nèi),重復(fù)聲明同一個(gè)變量。
// 報(bào)錯(cuò) { let a = 10; var a = 1; } // 報(bào)錯(cuò) { let a = 10; let a = 1; }
let實(shí)際上是JavaScript增加的塊級(jí)作用域。
function foo() { let n = 6; if (true) { let n = 10; } console.log( n ); //6 }
上面代碼有兩個(gè)代碼塊,都聲明了n變量,運(yùn)行后輸出的是6。這表明外層代碼塊不受內(nèi)層代碼塊的影響。如果,改成使用var定義變量n的話,最后輸出的就是10.
另外,ES6還規(guī)定,函數(shù)本身的作用域在其所在的代碼塊作用域之內(nèi)。
function f() { console.log("I am outside"); } (function () { if (false) { //重復(fù)聲明一次函數(shù)f function f() { console.log("I am inside"); } } f(); }());
上面的代碼片段,在ES5中運(yùn)行會(huì)得到“Iam inside”, 但是在ES6中運(yùn)行,則會(huì)得到“Iam outside”。
const命令
const是用來(lái)聲明常量的。一旦聲明,其值就不能改變。
const PI = 3.1415; console.log( PI ); //PI PI = 3; console.log( PI ); //3.1415 const PI = 3.1; console.log( PI ); //3.1415
有一點(diǎn)需要我們注意的是,對(duì)常量的重復(fù)定義不會(huì)報(bào)錯(cuò),它只會(huì)默默的失敗。
const的作用域與let命令相同:即只在聲明所在的塊級(jí)作用域內(nèi)有效。
if(condition) { const MAX = 5; } // 常量MAX在此處不可見(jiàn)(或者說(shuō)不可得)
此外,const常量也不可重復(fù)聲明。
var message = "Hello!"; let age = 25; //以下兩行都會(huì)報(bào)錯(cuò) const message = "Goodbye!"; const age = 30;
關(guān)于“ES6中l(wèi)et和const命令有什么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。