两者都会导致"undefined"
...例如
var a;
typeof blablabl; //"undefined";
typeof a; //"undefined";
检查变量是否未定义或者是否尚未声明变量的默认方式是什么;
var a = a || 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不存在';