如何在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"
的问题是,如果val
是null
、undefined
、0
、false
或""
,则会返回“已定义”。
【讨论】:
以上是关于如何在javascript中检查未定义的类型[重复]的主要内容,如果未能解决你的问题,请参考以下文章