国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專(zhuān)題視頻專(zhuān)題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專(zhuān)題1關(guān)鍵字專(zhuān)題50關(guān)鍵字專(zhuān)題500關(guān)鍵字專(zhuān)題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專(zhuān)題關(guān)鍵字專(zhuān)題tag2tag3文章專(zhuān)題文章專(zhuān)題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專(zhuān)題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

詳細(xì)介紹JS中“暫時(shí)性死區(qū)”的概念

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 19:32:38
文檔

詳細(xì)介紹JS中“暫時(shí)性死區(qū)”的概念

詳細(xì)介紹JS中暫時(shí)性死區(qū)的概念:暫時(shí)性死區(qū)只要塊級(jí)作用域內(nèi)存在let命令,它所聲明的變量就綁定(binding)這個(gè)區(qū)域,不再受外部的影響。var tmp = 123; if (true) { tmp = 'abc'; // ReferenceError let tmp; }上面代碼中,存在全局變量tmp,但是塊級(jí)作用域內(nèi)l
推薦度:
導(dǎo)讀詳細(xì)介紹JS中暫時(shí)性死區(qū)的概念:暫時(shí)性死區(qū)只要塊級(jí)作用域內(nèi)存在let命令,它所聲明的變量就綁定(binding)這個(gè)區(qū)域,不再受外部的影響。var tmp = 123; if (true) { tmp = 'abc'; // ReferenceError let tmp; }上面代碼中,存在全局變量tmp,但是塊級(jí)作用域內(nèi)l

暫時(shí)性死區(qū)

只要塊級(jí)作用域內(nèi)存在let命令,它所聲明的變量就“綁定”(binding)這個(gè)區(qū)域,不再受外部的影響。

var tmp = 123;

if (true) {
 tmp = 'abc'; // ReferenceError
 let tmp;
}

上面代碼中,存在全局變量tmp,但是塊級(jí)作用域內(nèi)let又聲明了一個(gè)局部變量tmp,導(dǎo)致后者綁定這個(gè)塊級(jí)作用域,所以在let聲明變量前,對(duì)tmp賦值會(huì)報(bào)錯(cuò)。

ES6 明確規(guī)定,如果區(qū)塊中存在letconst命令,這個(gè)區(qū)塊對(duì)這些命令聲明的變量,從一開(kāi)始就形成了封閉作用域。凡是在聲明之前就使用這些變量,就會(huì)報(bào)錯(cuò)。

總之,在代碼塊內(nèi),使用let命令聲明變量之前,該變量都是不可用的。這在語(yǔ)法上,稱(chēng)為“暫時(shí)性死區(qū)”(temporal dead zone,簡(jiǎn)稱(chēng) TDZ)。

if (true) {
 // TDZ開(kāi)始
 tmp = 'abc'; // ReferenceError
 console.log(tmp); // ReferenceError

 let tmp; // TDZ結(jié)束
 console.log(tmp); // undefined

 tmp = 123;
 console.log(tmp); // 123
}

上面代碼中,在let命令聲明變量tmp之前,都屬于變量tmp的“死區(qū)”。

“暫時(shí)性死區(qū)”也意味著typeof不再是一個(gè)百分之百安全的操作。

typeof x; // ReferenceError
let x;

上面代碼中,變量x使用let命令聲明,所以在聲明之前,都屬于x的“死區(qū)”,只要用到該變量就會(huì)報(bào)錯(cuò)。因此,typeof運(yùn)行時(shí)就會(huì)拋出一個(gè)ReferenceError

作為比較,如果一個(gè)變量根本沒(méi)有被聲明,使用typeof反而不會(huì)報(bào)錯(cuò)。

typeof undeclared_variable // "undefined"

上面代碼中,undeclared_variable是一個(gè)不存在的變量名,結(jié)果返回“undefined”。所以,在沒(méi)有let之前,typeof運(yùn)算符是百分之百安全的,永遠(yuǎn)不會(huì)報(bào)錯(cuò)。現(xiàn)在這一點(diǎn)不成立了。這樣的設(shè)計(jì)是為了讓大家養(yǎng)成良好的編程習(xí)慣,變量一定要在聲明之后使用,否則就報(bào)錯(cuò)。

有些“死區(qū)”比較隱蔽,不太容易發(fā)現(xiàn)。

function bar(x = y, y = 2) {
 return [x, y];
}

bar(); // 報(bào)錯(cuò)

上面代碼中,調(diào)用bar函數(shù)之所以報(bào)錯(cuò)(某些實(shí)現(xiàn)可能不報(bào)錯(cuò)),是因?yàn)閰?shù)x默認(rèn)值等于另一個(gè)參數(shù)y,而此時(shí)y還沒(méi)有聲明,屬于”死區(qū)“。如果y的默認(rèn)值是x,就不會(huì)報(bào)錯(cuò),因?yàn)榇藭r(shí)x已經(jīng)聲明了。

function bar(x = 2, y = x) {
 return [x, y];
}
bar(); // [2, 2]

另外,下面的代碼也會(huì)報(bào)錯(cuò),與var的行為不同。

// 不報(bào)錯(cuò)
var x = x;

// 報(bào)錯(cuò)
let x = x;
// ReferenceError: x is not defined

上面代碼報(bào)錯(cuò),也是因?yàn)闀簳r(shí)性死區(qū)。使用let聲明變量時(shí),只要變量在還沒(méi)有聲明完成前使用,就會(huì)報(bào)錯(cuò)。上面這行就屬于這個(gè)情況,在變量x的聲明語(yǔ)句還沒(méi)有執(zhí)行完成前,就去取x的值,導(dǎo)致報(bào)錯(cuò)”x 未定義“。

ES6 規(guī)定暫時(shí)性死區(qū)和letconst語(yǔ)句不出現(xiàn)變量提升,主要是為了減少運(yùn)行時(shí)錯(cuò)誤,防止在變量聲明前就使用這個(gè)變量,從而導(dǎo)致意料之外的行為。這樣的錯(cuò)誤在 ES5 是很常見(jiàn)的,現(xiàn)在有了這種規(guī)定,避免此類(lèi)錯(cuò)誤就很容易了。

總之,暫時(shí)性死區(qū)的本質(zhì)就是,只要一進(jìn)入當(dāng)前作用域,所要使用的變量就已經(jīng)存在了,但是不可獲取,只有等到聲明變量的那一行代碼出現(xiàn),才可以獲取和使用該變量。

聲明:本網(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

文檔

詳細(xì)介紹JS中“暫時(shí)性死區(qū)”的概念

詳細(xì)介紹JS中暫時(shí)性死區(qū)的概念:暫時(shí)性死區(qū)只要塊級(jí)作用域內(nèi)存在let命令,它所聲明的變量就綁定(binding)這個(gè)區(qū)域,不再受外部的影響。var tmp = 123; if (true) { tmp = 'abc'; // ReferenceError let tmp; }上面代碼中,存在全局變量tmp,但是塊級(jí)作用域內(nèi)l
推薦度:
標(biāo)簽: 介紹 里面的 js
  • 熱門(mén)焦點(diǎn)

最新推薦

猜你喜歡

熱門(mén)推薦

專(zhuān)題
Top
主站蜘蛛池模板: 一级毛片特黄久久免费看 | 国产高清视频在线观看 | 欧区一欧区二欧区三免费 | 中文字幕欧美在线观看 | 欧美亚洲图区 | 欧美精品1区 | 日韩在线欧美高清一区 | 香蕉依人 | 国产91精品一区二区麻豆亚洲 | 午夜精品一区二区三区在线视 | 精品国产欧美一区二区 | 国内精品伊人久久久影视 | 亚洲第八页 | 欧美xxx在线观看 | 国产精品久久久久久久久久久久 | 国产视频高清在线观看 | 亚洲一区日韩二区欧美三区 | 素人面接 | 中文字幕欧美在线 | 91精品国产色综合久久 | 欧美精品国产日韩综合在线 | 久久99精品国产麻豆不卡 | 日韩在线观看第一页 | 日韩视频观看 | 欧美综合自拍亚洲综合百度 | 91中文字幕网| 国产成人黄网址在线视频 | 免费精品在线观看 | 精品在线免费播放 | 国产视频一 | 欧美日韩精品一区二区在线播放 | 久久久久久久一精品 | 亚洲午夜伦理 | 精品视频一区二区 | 精品国产网站 | 久久精品免费一区二区视 | 99视频九九精品视频在线观看 | 亚洲精品视频免费观看 | 国产亚洲欧美日韩俺去了 | 国产 日韩 欧美在线 | 精品国产91久久久久 |