摘要:和的區(qū)別作用域是函數(shù)體的全部聲明變量提升循環(huán)內(nèi)變量過(guò)度共享循環(huán)本身及三次回調(diào)均共享唯一的變量。
let、const和var的區(qū)別
var : 作用域是函數(shù)體的全部,聲明變量提升
console.log(num);//undefined var num = 2 //循環(huán)內(nèi)變量過(guò)度共享 for (var i = 0; i < 4; i++) { alert(i);//0,1,2,3 } for (var i = 0; i < 4; i++) { setTimeout(function () { alert(i)//4,4,4,4 }, i * 100); }
循環(huán)本身及三次timeout回調(diào)均共享唯一的變量i。當(dāng)循環(huán)結(jié)束執(zhí)行時(shí),i的值為4,此時(shí)回調(diào)尚未被觸發(fā).
所以當(dāng)?shù)谝粋€(gè)timeout執(zhí)行時(shí),調(diào)用alert(i),此時(shí)i的值為4,所以最終彈出來(lái)的是4.
let聲明的變量擁有塊級(jí)作用域,聲明的全局變量不是全局對(duì)象的屬性,聲明的變量直到控制流到達(dá)該變量被定義的代碼行時(shí)才會(huì)被裝載,用let重定義變量會(huì)拋出一個(gè)語(yǔ)法錯(cuò)誤
var j = 100; for (let i = 0; i < 4; i++) { console.log(j)//not defined,暫時(shí)性死去,即使在該作用域外已經(jīng)存在這個(gè)變量,如果作用域內(nèi)需要使用 let、 const 再次聲明,則必須提前,否則無(wú)法使用,直到聲明后才可以使用 setTimeout(function () { alert(i)//0、1、2、3,塊級(jí)作用域 }, i * 100); let j = 0; //let j = 2;//SyntaxError,重定義變量會(huì)拋出一個(gè)語(yǔ)法錯(cuò)誤 console.log(j)//0,0,0,0 } window.i//undefined,不是全局對(duì)象的屬性
const聲明的變量與let聲明的變量類(lèi)似,它們的不同之處在于,const聲明的變量只可以在聲明時(shí)賦值,不可隨意修改,否則會(huì)導(dǎo)致SyntaxError(語(yǔ)法錯(cuò)誤).
const num = 1; num = 2;// Assignment to constant variable
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/97893.html
摘要:用聲明的變量,其可用范圍在當(dāng)前執(zhí)行上下文。在函數(shù)外聲明的變量,其作用范圍是全局。拋出語(yǔ)法錯(cuò)誤錯(cuò)誤信息未捕獲的異常標(biāo)識(shí)符已經(jīng)被聲明過(guò)。例如輸出照例,命名規(guī)范指出我們應(yīng)該用大寫(xiě)字母聲明常量。為了讓代碼長(zhǎng)期可維護(hù),命名規(guī)范還是值得遵守的。 轉(zhuǎn)載請(qǐng)注明出處:葡萄城官網(wǎng),葡萄城為開(kāi)發(fā)者提供專(zhuān)業(yè)的開(kāi)發(fā)工具、解決方案和服務(wù),賦能開(kāi)發(fā)者。原文出處:https://dzone.com/articles/...
摘要:變量常量綁定無(wú)特定關(guān)鍵字直接設(shè)值將一個(gè)文字列放到名為的變量里的類(lèi)型由文字列上面定義的正則表達(dá)式變成了整數(shù)這里就帶來(lái)一個(gè)在大工程里很容易帶來(lái)困擾的問(wèn)題理解代碼不得不受制于類(lèi)型極易變的變量要理解代碼所必需的工作量極大可變變量前綴將變量與 變量(常量)綁定 python無(wú)特定關(guān)鍵字,直接設(shè)值a = r^s*(d{4}-d{2}-d{2})s{1,2}(.+)$ # 將一個(gè)文字列放到名為a的...
摘要:和都能夠聲明塊級(jí)作用域,用法和是類(lèi)似的,的特點(diǎn)是不會(huì)變量提升,而是被鎖在當(dāng)前塊中。聲明常量,一旦聲明,不可更改,而且常量必須初始化賦值。臨時(shí)死區(qū)臨時(shí)死區(qū)的意思是在當(dāng)前作用域的塊內(nèi),在聲明變量前的區(qū)域叫做臨時(shí)死區(qū)。 主要知識(shí)點(diǎn)有:var變量提升、let聲明、const聲明、let和const的比較、塊級(jí)綁定的應(yīng)用場(chǎng)景showImg(https://segmentfault.com/img...
摘要:沒(méi)有聲明的情況和都能夠聲明塊級(jí)作用域,用法和是類(lèi)似的,的特點(diǎn)是不會(huì)變量提升,而是被鎖在當(dāng)前塊中。聲明常量,一旦聲明,不可更改,而且常量必須初始化賦值。臨時(shí)死區(qū)的意思是在當(dāng)前作用域的塊內(nèi),在聲明變量前的區(qū)域叫做臨時(shí)死區(qū)。 本章涉及3個(gè)知識(shí)點(diǎn),var、let、const,現(xiàn)在讓我們了解3個(gè)關(guān)鍵字的特性和使用方法。 var JavaScript中,我們通常說(shuō)的作用域是函數(shù)作用域,使用var聲...
閱讀 2618·2023-04-26 02:57
閱讀 1507·2023-04-25 21:40
閱讀 2349·2021-11-24 09:39
閱讀 3658·2021-08-30 09:49
閱讀 842·2019-08-30 15:54
閱讀 1234·2019-08-30 15:52
閱讀 2239·2019-08-30 15:44
閱讀 1333·2019-08-28 18:27