我正在我的浏览器控制台中试验一些javascript,并且不确定为什么这不起作用.控制台和jsfiddle中的以下代码在我的尝试中抛出错误:Uncaught ReferenceError:foo未定义
foo = foo || {};
Run Code Online (Sandbox Code Playgroud)
我解释这个的方式是:如果全局对象的foo(在这种情况下是窗口)不存在,则将其创建为空对象.
或者,代码window.foo = window.foo || {}; 像我期望的那样工作.事先为foo分配值foo = 'bar'会使原始语句在之后运行时也能正常工作.
您必须先检查是否foo已定义:
foo = typeof foo !== 'undefined' ? foo : {};
Run Code Online (Sandbox Code Playgroud)
它可能有点不直观,但是未定义和具有值undefined(window.foo在window没有foo属性时返回)之间存在差异.
更好的方法是添加var关键字:
var foo = foo || {};
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为JavaScript将变量声明提升到当前范围的顶部,声明foo并赋予它一个值undefined:
var foo;
foo = foo || {};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |