我有这样的代码:
let accessAllowed;
accessAllowed = (2>18) ? true : false;
alert(accessAllowed);
然而,当我使用它时:
let accessAllowed;
let accessAllowed = (2>18) ? true : false;
alert(accessAllowed);
结果是错误,JavaScript都没有。
作为JS的新手,我不确定 - 这是'让'的特色吗?我在其他地方找不到任何相关的东西。
答案 0 :(得分:4)
您不能使用let
重新声明变量,而可以使用var
:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let
在同一函数或块范围内重新声明相同的变量会引发SyntaxError。
let
具有与var
不同(可称为更有用)的范围规则,以帮助防止由var
的怪癖引起的许多类型的错误,这些错误在其他语言中不存在但是必须保留在JavaScript中,以便与几十年前编写的脚本向后兼容。
let
上的旁注:请注意,许多编程语言都有let
关键字,并经常用它来声明变量和常量 - 但请注意,每种语言对let
的使用都有不同的行为,所以不要指望{{1例如,JavaScript中的行为类似于Swift中的let
。
let
- declares a variable whose scope is limited to the enclosing block,而不是使用全局范围或功能范围的let
(并了解var
在两者之间选择的方式不是易于初学者理解)。因为在同一范围内重新声明变量是一个无意义的操作,可能是在错误中完成的,它会给你一个编译器错误,而用var
重新声明在一个闭包内是有效的。var
- declares a constant。请注意,“常量”不仅是文字值,还包括不可变的复杂对象。let
- Introduces a variable binding。与JavaScript中的let
基本相同,除了默认值是不可变的(如在Swift中)。使用let
声明一个可变变量。let mut
is a Linq keyword let
和Select
的简写。答案 1 :(得分:0)
不能在同一范围内重新声明(您正在做的是重新声明,相反,您不应该在第二行中使用'let'关键字,而只是重新分配)。