首先我們了解一下關(guān)鍵字var和let有什么作用?如何使用?
關(guān)鍵字var
var語(yǔ)句在javascript中聲明一個(gè)變量。
var a = 10;
說(shuō)明:
1、變量聲明在代碼執(zhí)行之前被處理。
2、用var聲明的JavaScript變量的范圍是其當(dāng)前執(zhí)行上下文。
3、在函數(shù)之外聲明的JavaScript變量的范圍是全局的。
function nodeSimplified(){ var a =10; console.log(a); //
在上面的代碼中,當(dāng)在if循環(huán)內(nèi)更新變量時(shí),你會(huì)發(fā)現(xiàn)變量“a”的值全局更新為20,因此在if循環(huán)之外值仍然存在。它類似于其他語(yǔ)言中的全局變量。但是,請(qǐng)務(wù)必小心使用此功能,因?yàn)榭赡軙?huì)覆蓋現(xiàn)有值。
關(guān)鍵字let
let語(yǔ)句在塊作用域中聲明一個(gè)局部變量。
let a =10;
說(shuō)明:
let語(yǔ)句允許我們創(chuàng)建一個(gè)變量,其范圍僅限于使用它的塊里。
它類似于我們?cè)贘ava,.NET等其他語(yǔ)言中聲明的變量。
function nodeSimplified(){ let a =10; console.log(a); //
關(guān)鍵字var和let的區(qū)別
在javascript中,關(guān)鍵字var和let都是可以用來(lái)聲明變量的,那么他們有什么區(qū)別?
作用域
var是函數(shù)作用域,而let是塊作用域。
可以說(shuō),與let相比,用var聲明的變量在整個(gè)程序中被定義。
變量提升
let不會(huì)提升到它們出現(xiàn)的塊的整個(gè)范圍。相比之下,var可以如下所示提升。
// 定義后調(diào)用變量x var x = 5; document.write(x, "\n"); // 定義后調(diào)用變量y let y = 10; document.write(y, "\n"); //先調(diào)用變量z,在使用var定義變量z document.write(z, "\n"); //顯示undefined var z = 2; // 先調(diào)用變量a,在使用var定義變量a document.write(a); //報(bào)錯(cuò) let a = 3;
運(yùn)行:
重聲明
在strict模式下,var將允許我們?cè)谕环秶鷥?nèi)重新聲明相同的變量;但,let不行:
'use strict'; var me = 'foo'; var me = 'bar'; // 此時(shí),變量me里的值為bar
'use strict'; let me = 'foo'; let me = 'bar'; // 報(bào)錯(cuò): 標(biāo)識(shí)符“me”已被聲明
總結(jié):
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com