Javascript 变量范围未定义

Javascript variable scope undefined

本文关键字:未定义 范围 变量 Javascript      更新时间:2023-09-26

如果尚未定义但发现一个奇怪的问题,我想将一个变量定义为默认值。

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检查可防止"未声明的变量"错误。