摘要:在使用定義變量時(shí),一開始就會(huì)形成封閉作用域,在聲明變量之前是無法使用該變量的。這個(gè)特點(diǎn)是為了彌補(bǔ)的缺陷。初始化沒有賦值會(huì)被默認(rèn)在初始化時(shí)必須賦值。創(chuàng)建到初始化的代碼塊就是暫時(shí)性死區(qū)。
在使用let/const定義變量時(shí),一開始就會(huì)形成封閉作用域,在聲明變量之前是無法使用該變量的。這個(gè)特點(diǎn)是為了彌補(bǔ)var的缺陷。
if(true){ name = ‘123’ name is not defined let name = ‘456’ }解析原理:
其實(shí)let/cosnt和var一樣都會(huì)有提升的效果,不同的是:
var 在創(chuàng)建時(shí)就會(huì)被初始化,賦值為undefined
let/const在進(jìn)入到塊級(jí)作用域時(shí),因?yàn)樘嵘脑驎?huì)先被創(chuàng)建,但不會(huì)被初始化。直到使用let/const定義時(shí),才會(huì)被初始化。let初始化沒有賦值會(huì)被默認(rèn)undefined;const在初始化時(shí)必須賦值。創(chuàng)建到初始化的代碼塊就是暫時(shí)性死區(qū)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/109746.html
摘要:會(huì)出現(xiàn)這樣的情況是因?yàn)閾碛袝簳r(shí)性死區(qū)。規(guī)定暫時(shí)性死區(qū)和語(yǔ)句不出現(xiàn)變量提升,主要是為了減少運(yùn)行時(shí)錯(cuò)誤,防止在變量聲明前就使用這個(gè)變量,從而導(dǎo)致意料之外的行為。 首先我們應(yīng)該知道js引擎在讀取js代碼時(shí)會(huì)進(jìn)行兩個(gè)步驟: 第一個(gè)步驟是解釋。 第二個(gè)步驟是執(zhí)行。 所謂解釋就是會(huì)先通篇掃描所有的Js代碼,然后把所有聲明提升到頂端,第二步是執(zhí)行,執(zhí)行就是操作一類的。 我們先來看個(gè)簡(jiǎn)單的變量提升...
摘要:聲明一個(gè)只讀的常量。的作用域與命令相同只在聲明所在的塊級(jí)作用域內(nèi)有效。這在語(yǔ)法上,稱為暫時(shí)性死區(qū),簡(jiǎn)稱。暫時(shí)性死區(qū)也意味著不再是一個(gè)百分之百安全的操作。重復(fù)聲明是允許在相同作用域內(nèi)重復(fù)聲明同一個(gè)變量的,而與不允許這一現(xiàn)象。 轉(zhuǎn)載自阮一峰老師的ES6入門,稍有修改 1.基本概念MDN var聲明了一個(gè)變量,并且可以同時(shí)初始化該變量。let語(yǔ)句聲明一個(gè)塊級(jí)作用域的本地變量,并且可選的賦予...
摘要:聲明的變量只在其所在的代碼塊內(nèi)有效。只要在聲明之前使用這些變量,就會(huì)報(bào)錯(cuò)。在語(yǔ)法上稱為暫時(shí)性死區(qū)有時(shí)候,會(huì)不經(jīng)間遇到比較隱蔽的死區(qū),不太容易被發(fā)現(xiàn)。不允許重復(fù)聲明不允許在相同的作用域內(nèi)聲明同一個(gè)變量。一旦聲明,其值就不能再改變。 let && const let let聲明的變量只在其所在的代碼塊內(nèi)有效。 { let a = 10; } console.log(a) //R...
摘要:明確規(guī)定,如果區(qū)塊中存在和命令,這個(gè)區(qū)塊對(duì)這些命令聲明的變量,從一開始就形成了封閉作用域。凡是在聲明之前就使用這些變量,就會(huì)報(bào)錯(cuò)。暫時(shí)性死區(qū)意味著不再是一個(gè)百分百的安全操作了不允許重復(fù)聲明不允許在相同作用域內(nèi),重復(fù)聲明同一個(gè)變量。 let,const共同擁有的特點(diǎn) 提供了代碼塊級(jí)作用域;(代碼塊是用{}來實(shí)現(xiàn)的) 不存在變量提升,先聲明再使用; 存在暫時(shí)性死區(qū); 不允許重復(fù)聲明; ...
摘要:想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳博客一年百來篇優(yōu)質(zhì)文章等著你引用規(guī)范作者一條最近的推特變量提升是一個(gè)陳舊且令人困惑的術(shù)語(yǔ)。變量提升部分提前激活是在和之前聲明變量的一種較老的方法。 為了保證可讀性,本文采用意譯而非直譯。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你! 引用 ES6 規(guī)范作者 Allen Wirfs-Brock一條最近的推特: 變量提升是一個(gè)陳舊且令人困惑的...
閱讀 3495·2023-04-25 18:14
閱讀 1602·2021-11-24 09:38
閱讀 3329·2021-09-22 14:59
閱讀 3123·2021-08-09 13:43
閱讀 2643·2019-08-30 15:54
閱讀 619·2019-08-30 13:06
閱讀 1625·2019-08-30 12:52
閱讀 2776·2019-08-30 11:13