了解javascript中l(wèi)et和var及const關(guān)鍵字的區(qū)別
1.聲明后未賦值,表現(xiàn)相同
//一個(gè)例子 'use strict'; (function() { var varTest; let letTest; console.log(varTest); //輸出undefined console.log(letTest); //輸出undefined }());
2.使用未聲明的變量,表現(xiàn)不同
//一個(gè)例子 (function() { console.log(varTest); //輸出undefined(注意要注釋掉下面一行才能運(yùn)行) console.log(letTest); //直接報(bào)錯(cuò):ReferenceError: letTest is not defined var varTest = 'test var OK.'; let letTest = 'test let OK.'; }());
3.重復(fù)聲明同一個(gè)變量時(shí),表現(xiàn)不同
//一個(gè)例子 'use strict'; (function() { var varTest = 'test var OK.'; let letTest = 'test let OK.'; var varTest = 'varTest changed.'; let letTest = 'letTest changed.'; //直接報(bào)錯(cuò):SyntaxError: Identifier 'letTest' has already been declared console.log(varTest); //輸出varTest changed.(注意要注釋掉上面letTest變量的重復(fù)聲明才能運(yùn)行) console.log(letTest); }());
4.變量作用范圍,表現(xiàn)不同
//一個(gè)例子 'use strict'; (function() { var varTest = 'test var OK.'; let letTest = 'test let OK.'; { var varTest = 'varTest changed.'; let letTest = 'letTest changed.'; } console.log(varTest); //輸出"varTest changed.",內(nèi)部"{}"中聲明的varTest變量覆蓋外部的letTest聲明 console.log(letTest); //輸出"test let OK.",內(nèi)部"{}"中聲明的letTest和外部的letTest不是同一個(gè)變量 }());
5.const定義的變量不可以修改,而且必須初始化
//一個(gè)例子 const b = 2;//正確 // const b;//錯(cuò)誤,必須初始化 console.log('函數(shù)外const定義b:' + b);//有輸出值 // b = 5; // console.log('函數(shù)外修改const定義b:' + b);//無(wú)法輸出
6.var定義的變量可以修改,如果不初始化會(huì)輸出undefined,不會(huì)報(bào)錯(cuò)
var a = 1; // var a;//不會(huì)報(bào)錯(cuò) console.log('函數(shù)外var定義a:' + a);//可以輸出a=1 function change(){ a = 4; console.log('函數(shù)內(nèi)var定義a:' + a);//可以輸出a=4 } change(); console.log('函數(shù)調(diào)用后var定義a為函數(shù)內(nèi)部修改值:' + a);//可以輸出a=4
7.let是塊級(jí)作用域,函數(shù)內(nèi)部使用let定義后,對(duì)函數(shù)外部無(wú)影響
let c = 3; console.log('函數(shù)外let定義c:' + c);//輸出c=3 function change(){ let c = 6; console.log('函數(shù)內(nèi)let定義c:' + c);//輸出c=6 } change(); console.log('函數(shù)調(diào)用后let定義c不受函數(shù)內(nèi)部定義影響:' + c);//輸出c=3
學(xué)習(xí)到此結(jié)束!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
script標(biāo)簽的 charset 屬性使用說(shuō)明
如果外部文件中的字符編碼與主文件中的編碼方式不同,就要用到 charset 屬性。2010-12-12淺析javascript的間隔調(diào)用和延時(shí)調(diào)用
文章主要通過(guò)小實(shí)例談?wù)刯avascript的間隔調(diào)用和延時(shí)調(diào)用,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下2014-11-11JS div勻速移動(dòng)動(dòng)畫(huà)與變速移動(dòng)動(dòng)畫(huà)代碼實(shí)例
這篇文章主要介紹了JS div勻速移動(dòng)動(dòng)畫(huà)與變速移動(dòng)動(dòng)畫(huà),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03JavaScript中CreateTextFile函數(shù)
JavaScript中CreateTextFile函數(shù)是創(chuàng)建指定的文件名并返回一個(gè) TextStream 對(duì)象,可以使用這個(gè)對(duì)象對(duì)文件進(jìn)行讀寫(xiě)2020-08-08JavaSacript中charCodeAt()方法的使用詳解
這篇文章主要介紹了JavaSacript中charCodeAt()方法的使用詳解,是JS入門(mén)學(xué)習(xí)中的基本知識(shí),需要的朋友可以參考下2015-06-06深入理解JavaScript系列(50):Function模式(下篇)
這篇文章主要介紹了深入理解JavaScript系列(50):Function模式(下篇),本篇我們介紹的一些模式稱(chēng)為初始化模式和性能模式,主要是用在初始化以及提高性能方面,一些模式之前已經(jīng)提到過(guò),這里只是做一下總結(jié),需要的朋友可以參考下2015-03-03