摘要:但是或者,會(huì)將聲明關(guān)進(jìn)一個(gè)小黑屋也是暫時(shí)性死區(qū),只有執(zhí)行到變量聲明這句語句時(shí),變量才會(huì)從小黑屋被放出來,才能安全使用這個(gè)變量。
前言
踩著前人的肩膀,努力前行。參考了很多前人的文章。
1.變量聲明const和letes6之前聲明變量只能用var,var的特點(diǎn)是無論聲明在何處,都會(huì)被視為聲明在函數(shù)的最頂部(不在函數(shù)內(nèi)即在全局作用域的最頂部)
function test(){ if(false){ var name = "zhangsan"; }else{ console.log(name); //此處訪問值為undefined } console.log(name); //此處訪問值為undefined }
可以看到雖然打印結(jié)果是undefined,但是并沒有報(bào)錯(cuò)。那是因?yàn)楸籮s編譯過結(jié)果就變成了
function test(){ var name; //這就是js的變量提升 if(false){ name = "zhangsan"; }else{ console.log(name); //此處訪問值為undefined } console.log(name); //此處訪問值為undefined }
再來看ES6新增的let,const。它們的作用域只在一個(gè)函數(shù)內(nèi)部或者一個(gè)代碼塊內(nèi)部。
function test() { if(flag) { let name = "zhangsan" } else { //此處訪問會(huì)直接報(bào)錯(cuò)。訪問不到。 console.log(test) } }
const作用域和let一樣。但是他通常被用于定義常量。就是它的值被設(shè)置完成后就不能再修改了。
const name = "lux" name = "joe" // 再次賦值此時(shí)會(huì)報(bào)錯(cuò)
但是,如果 const 的是一個(gè)對(duì)象,對(duì)象所包含的值是可以被修改的。抽象一點(diǎn)兒說,就是對(duì)象所指向的地址不能改變,而變量成員是可以修改的。
const student = { name: "cc" } // 可以成功 student.name = "yy"; // 如果這樣子就會(huì)報(bào)錯(cuò)了 student = { name: "yy" };
還有TDZ(暫時(shí)性死區(qū))
{ console.log(value) // 報(bào)錯(cuò) let value = "lala" }
我們都知道,JS引擎掃描代碼時(shí),如果發(fā)現(xiàn)變量聲明,用 var 聲明變量時(shí)會(huì)將聲明提升到函數(shù)或全局作用域的頂部。但是 let 或者 const,會(huì)將聲明關(guān)進(jìn)一個(gè)小黑屋也是TDZ(暫時(shí)性死區(qū)),只有執(zhí)行到變量聲明這句語句時(shí),變量才會(huì)從小黑屋被放出來,才能安全使用這個(gè)變量。
2.未完待續(xù)本文基本是參考https://www.jianshu.com/p/287...。原文說的更仔細(xì),有更多的內(nèi)容。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/96964.html
摘要:表示變量表示常量,和都是塊級(jí)作用域。發(fā)起異步請(qǐng)求面試題生成器是能返回一個(gè)迭代器的函數(shù)。方法不僅返回值,它返回的對(duì)象具有兩個(gè)屬性和。你不必到處使用回調(diào)函數(shù),而是可以建立貌似同步的代碼,但實(shí)際上卻使用來等待異步操作結(jié)束。 原文鏈接 es6中有很多特性,使javascript語法更加豐滿,總結(jié)一波常用的es6知識(shí)點(diǎn)。 1.變量聲明const和let 在ES6之前,我們都是用var關(guān)鍵字聲明變...
摘要:組建屬性初始化默認(rèn)值類型在中將下面的代碼替換成下面的代碼最后一步將初始狀態(tài)從構(gòu)造函數(shù)中轉(zhuǎn)變成屬性初始化。在構(gòu)造函數(shù)的后天添加正確的代碼你需要把狀態(tài)初始化代碼從構(gòu)造函數(shù)中刪除。 這是React和ECMAScript6結(jié)合使用系列文章的第二篇。 下面是所有系列文章章節(jié)的鏈接: React 、 ES6 - 介紹(第一部分) React類、ES7屬性初始化(第二部分) React類,方法綁定...
摘要:最近重構(gòu)了一個(gè)項(xiàng)目,引入了部分用法,最大的感受是讓這門語言變得更加嚴(yán)謹(jǐn),更加方便。通過該方法獲得位置后還得比較一次才能判斷是否存在。再來看看的寫法使用數(shù)組來初始化一個(gè),構(gòu)造器能確保不重復(fù)地使用這些值。下面提供鏈接,供有興趣的朋友參考。 最近重構(gòu)了一個(gè)SPA項(xiàng)目,引入了部分ES6用法,最大的感受是ES6讓javascript這門語言變得更加嚴(yán)謹(jǐn),更加方便。本篇將結(jié)合實(shí)戰(zhàn)經(jīng)驗(yàn),對(duì)最常用的部...
摘要:示例運(yùn)行函數(shù)彈出彈出函數(shù)接收參數(shù),返回值。其中,返回一個(gè)對(duì)象,是的返回值,代表函數(shù)是否執(zhí)行完成。 ES6特性介紹(下) ES6新的標(biāo)準(zhǔn),新的語法特征:1、變量/賦值2、函數(shù)3、數(shù)組/json4、字符串5、面向?qū)ο?、Promise7、generator8、ES7:async/await 《【W(wǎng)eb全棧課程二】ES6特性介紹(上)》見:https://segmentfault.com/a...
摘要:使得聲明對(duì)象字面量更加簡單,提供了屬性簡寫和方法簡寫功能,屬性名計(jì)算的新特性。屬性簡寫在及以前的版本中,對(duì)象字面量只支持鍵值對(duì)集合。實(shí)際業(yè)務(wù)中,對(duì)象字面量的初始化會(huì)有一定的代碼重復(fù)。 showImg(https://segmentfault.com/img/bVWd8N?w=320&h=235); ECMAScript6使得聲明對(duì)象字面量更加簡單,提供了屬性簡寫和方法簡寫功能,屬性名計(jì)...
閱讀 2032·2021-11-08 13:14
閱讀 2940·2021-10-18 13:34
閱讀 2028·2021-09-23 11:21
閱讀 3591·2019-08-30 15:54
閱讀 1760·2019-08-30 15:54
閱讀 2930·2019-08-29 15:33
閱讀 2581·2019-08-29 14:01
閱讀 1948·2019-08-29 13:52