最近我在 chrome 控制台中遇到了这个奇怪的事情。在这里,我故意将一个未定义的东西分配给 a 以抛出错误。
let a = werwr // Uncaught ReferenceError: werwr is not defined
然后,当我尝试将合法的东西分配给 a 时,发生了以下情况:
let a = "legit string" // Uncaught SyntaxError: Identifier 'a' has already been declared
所以我不能使用“let”,因为 a 已经被声明了。所以我试图将其他东西重新分配给“已经声明的”
a = "legit string" // Uncaught ReferenceError: a is not defined
所以似乎我不能将其他东西重新分配给 a 但同时, a 已被声明,所以我不能再次使用 let 。
我理解声明和分配变量之间的区别。然而,在这里似乎两者都不能再做。这与控制台中“让”的范围有关吗?因为同样的事情完全适用于“var”
var a = werwr
// Uncaught ReferenceError: werwr is not defined
a = ”legit string“
// ”legit string“
var a = "legit string"
// Uncaught SyntaxError: Identifier 'a' has already been declared
跟进
“手动”提升 let 语句与隐式案例之间似乎存在一些差异。
throw new Error
let example = 5
// same errors as before
而在这种情况下,示例可以再次重新分配。
let example
throw new Error
example = 5