为什么我在创建函数时会出错,而在创建变量时却不会?
Why do I get an error when create a function but not when a variable?
能否请您解释一下为什么以下代码会给我一个错误(仅在严格模式下)?
'use strict';
name = 'Adam';
console.log(name);
doSomething = function() {};
控制台:
亚当
ReferenceError: doSomething 未定义
严格模式禁止隐式全局变量。
必须显式声明变量(使用 const
、let
或 var
)。
您可以通过将 属性 分配给全局对象(在浏览器中为 window
)来创建显式全局...但不要这样做:全局是在不同部分之间产生冲突的好方法的代码。 (例如,在浏览器内置 name
variable 和您自己的 name
变量之间)。
能否请您解释一下为什么以下代码会给我一个错误(仅在严格模式下)?
'use strict';
name = 'Adam';
console.log(name);
doSomething = function() {};
控制台:
亚当
ReferenceError: doSomething 未定义
严格模式禁止隐式全局变量。
必须显式声明变量(使用 const
、let
或 var
)。
您可以通过将 属性 分配给全局对象(在浏览器中为 window
)来创建显式全局...但不要这样做:全局是在不同部分之间产生冲突的好方法的代码。 (例如,在浏览器内置 name
variable 和您自己的 name
变量之间)。