如何检查变量是否未定义(已声明但未分配值)与未声明(不存在)?

时间:2015-11-19 15:20:38

标签: javascript

两者都会导致"undefined" ...例如

var a;
typeof blablabl; //"undefined";
typeof a; //"undefined";

检查变量是否未定义或者是否尚未声明变量的默认方式是什么;

var a = a || 3;

仅当范围内已存在变量时才有效。

3 个答案:

答案 0 :(得分:2)

如果你可以对变量名称进行硬编码,你可以测试一些变量的初始化(例如b)而不用以下方式修改它的值,

(function () {
    "use strict";
    var foo;
    try {
        foo = b;
        console.log('b', ' is initialised');
    } catch(e) {
        if (e instanceof ReferenceError)
            console.log('b', ' is not initialised');
    }
}());

另请注意,以下内容不会出现错误

(function () {
    "use strict";
    var foo;
    var foo;
}());

因此,如果您"不确定" ,只需再次var

答案 1 :(得分:2)

刚刚测试了我的建议,似乎有效:

"use strict";
try {
  b = 3;
} catch(e) {
  console.log("Caught it:", e);
  // Caught it: ReferenceError: assignment to undeclared variable b
}

答案 2 :(得分:1)

如果尚未定义,

(a === undefined)将返回true。

如果a尚未定义或者等于null,则

(a == undefined)将返回true。

如果要检查变量是否存在,可以检查其范围(如果适用):

var exists =(this.hasOwnProperty(' a'))? ' a存在于当前范围内' :' a不存在';