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