Javascript 变量范围未定义
Javascript variable scope undefined
如果尚未定义但发现一个奇怪的问题,我想将一个变量定义为默认值。
var x = x || {}
工作,而x = x || {}
给出错误。
萤火虫的输出。
>>> a = a || {};
ReferenceError: a is not defined
[Break On This Error]
a = a || {};
with(_... {}; }; (line 2)
>>> var b = b || {};
undefined
>>> b;
Object {}
>>> a;
ReferenceError: a is not defined
[Break On This Error]
为什么第一个给出错误,而第二个似乎通过。
只需使用 var
. 除了旧IE版本上的错误外,添加var
可以为您保存错误消息,并清楚地表明您不会假设它是在其他地方声明的。
在那些旧版本的IE上,
x = (typeof x !== 'undefined' && x) || {}
typeof
检查可防止"未声明的变量"错误。
相关文章:
- AngularJS:'$范围未定义'
- Javascript 变量范围未定义
- 从html调用angularjs控制器中的一个函数,但未定义范围变量
- AngularJS范围未定义
- 变量未定义/超出范围
- 因果报应测试中未定义的预期范围变量
- 在ColdFusion中表单范围中未定义AJAX请求的发布参数
- 创建可在任何地方使用的 JS 函数?范围和功能“未定义”的问题
- JavaScript 中全局范围内存在未定义变量的原因是什么?
- Angularjs 指令 - 未定义隔离的范围值
- 范围变量在函数内部未定义 - AngularJS
- 与“未定义”进行比较是否仍会进行全局范围查找
- AngularJS:控制器中未定义的范围变量
- Angular js 指令控制器访问范围属性,但返回未定义
- Javascript 范围:为什么 foo 返回未定义
- 错误业力“未定义”范围变量在之前每个
- 范围变量未定义在 angularjs 打字稿控制器类指令
- JavaScript 访问 Angular 范围返回“未定义” - 异步问题
- 范围问题/“未定义不是一个函数”
- 未定义范围