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