有区别。
var x = 1
在当前范围内声明变量 x
(又名执行上下文)。如果声明出现在函数中 - 声明了一个局部变量;如果它在全局范围内 - 声明一个全局变量。
x = 1
另一方面,它仅仅是一个属性分配。它首先尝试解决x
作用域链。如果它在该范围链中的任何位置找到它,它就会执行分配;如果它没有找到x
,那么它只会在全局对象(它是作用域链中的顶级对象)上创建属性。x
现在,请注意它没有声明一个全局变量,它创建了一个全局属性。
两者之间的区别是微妙的,可能会令人困惑,除非您了解变量声明也会创建属性(仅在变量对象上)并且 Javascript
近期评论