JS var: 帮助我理解这个
JS的全局上下文中没有任何区别。全局上下文的Variable object是全局上下文本身。这就是为什么我们可以在函数或eval上下文中访问全局变量和方法。然而,var语句只是确保在当前上下文中定义一个变量,所以在全局上下文中省略var没有任何区别。例外情况是,ES5严格模式可能会在看到没有var声明的变量时抛出错误。
唯一的区别是,var将在当前(执行)上下文中声明一个没有定义的变量。这在js解析时发生,因此引擎知道在上下文中有一个具有该名称的变量可用。省略var将导致直接从全局对象进行属性访问。
alert(globalVar); globalVar = something;将由于JS编译var的方式而引发错误。在第二行之前添加var,你只会得到"undefined"。
是的,但我的答案仍然是正确的。var关键字将在解析时,在当前上下文中神奇地声明一个变量,而不需要任何定义。
不,答案"没有区别"是不正确的,这基本上是你原始答案中所说的一切:)
我添加了细则:p
那个细则确实太大了。我想你应该使用。
解决方法:
在全局上下文中,可以省略var关键字来声明变量,因为全局上下文的Variable object就是全局上下文本身。如果在ES5严格模式下省略var关键字,则可能会抛出错误。