如何在javascript中检查未定义的类型[重复]

Posted

技术标签:

【中文标题】如何在javascript中检查未定义的类型[重复]【英文标题】:How to check for undefined type in javascript [duplicate] 【发布时间】:2012-10-10 01:00:08 【问题描述】:

可能重复:Is there a standard function to check for null, undefined, or blank variables in javascript?

在javascript中检查undefined类型的最佳方法是什么。我知道一种检查未定义类型的方法,即typeOf。但是我必须检查很多地方,所以如果有任何简短且更好的检查方法,请告诉我?

我尝试了几种方法,但没有成功:

    alert(undefined === "undefined");
    alert(undefined || "defined"); 

【问题讨论】:

将原版typeof foo === "undefined" 放入isDefined(value, [default]) 函数中 你已经知道最好的方法了。 【参考方案1】:

使用typeof val == "undefined" 是最好的方法,因为undefined 的值可以修改。

var x;

console.log("x == undefined => " + (x == undefined));
console.log("typeof x == 'undefined' => " + (typeof x == 'undefined'));

var undefined = 10; // for some reason, browsers allow this!
console.log('undefined overwritten to ' + undefined);

console.log("x == undefined => " + (x == undefined)); // this will return false!
console.log("typeof x == 'undefined' => " + (typeof x == 'undefined'));

【讨论】:

在 ES5 中,全局对象的 undefined 属性是只读的,因此不能将其值设置为其他任何值。【参考方案2】:
var variable2 = variable1  || '';

如果变量 1 未定义,则将其设置为 '',否则将使用变量 1。

【讨论】:

更准确地说“如果 Variable1 是 falsey ...”【参考方案3】:

这是你所说的使用 typeof 的最佳方式。

例子:

alert(typeof variable === 'undefined')

【讨论】:

typeof 总是返回字符串,所以=== 没有特殊需要。 是的,没有特殊需要,但我可以放心。我想严格比较字符串,不再转换,我知道typeof返回字符串。 @VisioN ===== 稍微快一点,所以它实际上是首选。 @JanDvorak 我创建了一个jsperf 进行检查。每次新的测试运行(Chrome 22)我的结果都不同。 @jbabey——考虑到 javascript 的松散类型,== 非常方便,例如1 == '1'。想象一下,在进行比较之前必须将所有内容都转换为相同的类型(这或多或少是== 所做的)。我更喜欢只在必要时使用===,而在其他任何地方使用==【参考方案4】:

对你来说没有什么新鲜事:

// either
(val === undefined)
// or
(typeof val == "undefined")

使用val || "defined"的问题是,如果valnullundefined0false"",则会返回“已定义”。

【讨论】:

以上是关于如何在javascript中检查未定义的类型[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在javascript中检查变量类型[重复]

如何在 JavaScript 中处理“未定义”[重复]

如何在 JavaScript 中处理“未定义”[重复]

如何在 JavaScript 中检查空/未定义/空字符串?

如何在 JavaScript 中检查空/未定义/空字符串?

在 JavaScript [重复] 中引用未定义变量时如何避免错误