[英]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
斯威夫特,例如。
let
- 聲明一個變量,其作用域僅限於封閉塊,而不是var
使用全局作用域或函數作用域(理解var
如何在兩者之間進行選擇對於初學者來說並不容易理解)。 因為在同一范圍內重新聲明一個變量是一個無意義的操作,可能會在錯誤中完成它會給你一個編譯器錯誤,而使用var
重新聲明在閉包內是有效的。let
- 聲明一個常量。 請注意,“常量”不僅是文字值,還包括不可變的復雜對象。let
- 引入了一個變量綁定。 本質上與 JavaScript 中的let
相同,除了默認值是不可變的(如在 Swift 中)。 使用let mut
聲明一個可變變量。let
是Select
和SelectMany
的 Linq 關鍵字簡寫。Let 不能在同一范圍內重新聲明(您正在做的是重新聲明,而您不應該在第二行中使用 'let' 關鍵字,而只是重新分配)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.