最近我在Chrome控制台中遇到了这个奇怪的事情。在这里,我故意将一个未定义的事情分配给a,以便引发错误。Chrome控制台已经声明的变量抛出未定义的参考错误,让
let a = werwr // Uncaught ReferenceError: werwr is not defined
然后,当我试图分配的东西合法的,发生这种情况:
let a = "legit string" // Uncaught SyntaxError: Identifier 'a' has already been declared
,所以我不能用“让”,因为一个已经被声明。于是,我就重新分配别的东西来了“已经宣称为”
a = "legit string" // Uncaught ReferenceError: a is not defined
所以好像我不能重新分配别的东西的,但在同一时间,一个已被宣布所以我不能用再来一次。
我明白声明和分配变量的区别。然而在这里,似乎都不能再做。这是否与控制台中“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语句VS隐含的情况有些区别。
throw new Error
let example = 5
// same errors as before
虽然在这种情况下可以重新分配示例。
let example
throw new Error
example = 5
@JaromandaX固定错别字对不起 – whales
貌似控制台在chrome中是以严格模式开始的 - 类似的问题在firefox中,除了'a =“合法字符串”''每次都适用 –
这似乎是一个烦恼铬控制台,当然 - 但是,这将不会有任何影响网页**在所有** –