簡體   English   中英

JavaScript const 和 let 作用域語法有效性

[英]JavaScript const and let scoping syntax validity

以下是有效的 JavaScript 嗎?

const x = 1;

if(x){
  const x = 2;
  console.log(x); // 2
}
console.log(x); // 1

就像在內部塊范圍內將x重新定義為const (或let )一樣?

不允許重新定義為var ,因為這會被提升到頂級范圍,然后與原始x聲明發生沖突。

我想我在這里是對的,對吧? 允許以這種方式重新定義嗎? 所有主要的 JS 引擎都支持這個嗎?

是的,該塊是有效的,因為變量 shadowing

第二次聲明x ,它會在內部作用域中聲明,並且會隱藏外部作用域中所有同名的變量。

這允許您為變量指定您喜歡的名稱,而不必擔心外部庫或上面的某個地方是否有同名的變量。

例如,您可以多次為一個索引聲明let i 如果你不能,你應該只聲明一次let i ,然后在所有其他時間使用i = ...

但是,如果將來您決定不需要在外部作用域中使用let i ,則可以刪除它而無需過多考慮后果,並且i = ...將成為全局變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM