簡體   English   中英

使用 `let` 重新聲明一個變量會導致“Uncaught SyntaxError: redeclaration of let ...”

[英]Redeclaring a variable using `let` results in “Uncaught SyntaxError: redeclaration of let …”

我有這樣的代碼:

let accessAllowed;

accessAllowed = (2>18) ? true : false;
alert(accessAllowed);

但是,當我使用它時:

let accessAllowed;
let accessAllowed = (2>18) ? true : false;

alert(accessAllowed);

結果是一個錯誤,並且 JavaScript 都不起作用。

作為 JS 的新手,我不確定這是否是let一個特性。 我在其他地方找不到任何關於此的信息。

你不能使用let來重新聲明一個變量,而你可以使用var

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let

在相同的函數或塊范圍內重新聲明相同的變量會引發 SyntaxError。

let具有與var不同(可以說更有用)的范圍規則,以幫助防止由var的怪癖引起的許多類型的錯誤,這些錯誤在其他語言中不存在,但必須保留在 JavaScript 中,以便與幾十年前編寫的腳本向后兼容。

關於let旁注:

需要注意的是很多編程語言有let的關鍵字和經常用它來聲明變量和常量-但是請注意,每種語言的使用let具有非常不同的特性,所以不要指望let在JavaScript中表現得像個let斯威夫特,例如。

  • JavaScript: let - 聲明一個變量,其作用域僅限於封閉塊,而不是var使用全局作用域或函數作用域(理解var如何在兩者之間進行選擇對於初學者來說並不容易理解)。 因為在同一范圍內重新聲明一個變量是一個無意義的操作,可能會在錯誤中完成它會給你一個編譯器錯誤,而使用var重新聲明在閉包內是有效的。
  • Swift: let - 聲明一個常量 請注意,“常量”不僅是文字值,還包括不可變的復雜對象。
  • Rust: let - 引入了一個變量綁定 本質上與 JavaScript 中的let相同,除了默認值是不可變的(如在 Swift 中)。 使用let mut聲明一個可變變量。
  • C#: let SelectSelectMany 的 Linq 關鍵字簡寫。

Let 不能在同一范圍內重新聲明(您正在做的是重新聲明,而您不應該在第二行中使用 'let' 關鍵字,而只是重新分配)。

暫無
暫無

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

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