Javascript 在'之外声明不带var的变量;使用严格的';

Javascript 在'之外声明不带var的变量;使用严格的';,javascript,Javascript,我不明白它为什么会出错 str='string';//str没有定义。为什么? 设str='string2'; console.log(str)您需要首先声明变量,然后使用它,这就是let的工作方式。如果您使用var关键字,它就会起作用 使用let str = 'string'; // DOES NOT WORK! here it hasn't been declared let str = 'string2'; // move this line up before the

我不明白它为什么会出错

str='string';//str没有定义。为什么?
设str='string2';

console.log(str)您需要首先声明变量,然后使用它,这就是
let
的工作方式。如果您使用
var
关键字,它就会起作用

使用
let

str = 'string';        // DOES NOT WORK! here it hasn't been declared
let str = 'string2';   // move this line up before the above line

console.log(str);
使用
var

str = 'string';        // IT WORKS because of variable hoisting!
var str = 'string2';

console.log(str);

请参阅:

在没有关键字的情况下进行变量声明时,JS解释器的行为如何?为什么会出现这个错误?我在FireFox中看到的实际错误是“
ReferenceError
:在初始化之前无法访问词法声明
str
”,这应该表明实际问题是同一块中的
let
,事实上,如果您删除
let str=
它可以正常工作。将
let
放在第一行而不是第二行,或者干脆去掉它。您不能在初始化之前访问'str',您应该首先声明变量
var str