出的只是知识的好奇心,为什么JavaScript的接受Javascript:z = z ||不使用VAR时,[]会抛出错误 - 为什么?
var z = z || [];
初始化Z(如z可最初定义)
但没有变种,它抛出一个错误(在全球空间)
z = z || [];
(如果Z先前未定义)
在全球空间,您不需要使用VAR虽然我得到它可能b不好的做法。
之前你说这是一个问题,如
What is the purpose of the var keyword and when to use it (or omit it)?
注意的声明重复“如果在全球范围内是那么有没有什么区别。”
显然这不是100%真实的,因为我的工作示例。
这是一个怪癖还是有合法的逻辑?
添加答案的总结,因为我已经学会了:
感谢Tim(见下文)的关键,我的误解并没有意识到这一点(基本的javascript)
var z;如果z已经存在,则绝对不会执行任何操作。
如果您不正确地假定“var z”总是初始化,那么这就是这种表达式似乎具有的方式。
从左侧开始,“var z”只是确保z已定义,但实际上并不影响现有值(如果已存在)。然后在右边,如果z已经存在,则使用它,如果不存在,则该变量刚刚声明(但为空),因此它不会被使用,但不会引发错误。
这是对这种确定范围和在Javascript吊装问题的一个很好的文章: http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting
非常感谢MiniTech移动和其他人谁贡献呢!
作为一般规则:复制实际的错误信息通常比写入“抛出错误”更有帮助。 – 2012-01-30 16:04:54