如何在javascript中检查未定义的类型

如何在javascript中检查未定义的类型,javascript,jquery,Javascript,Jquery,可能重复: 检查javascript中未定义的类型的最佳方法是什么。我知道一种检查未定义类型的方法,即typeOf。但是我必须检查是否有很多地方,所以如果有任何短而更好的检查方法,请让我知道 我尝试了几种方法,但没有成功: alert(undefined === "undefined"); alert(undefined || "defined"); 对你来说没什么新鲜事: // either (val === undefined) // or (typeof val ==

可能重复:

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

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

    alert(undefined === "undefined");
    alert(undefined || "defined"); 
对你来说没什么新鲜事:

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

使用
val | |“defined”
的问题是,如果
val
null
未定义
0
false
将返回“defined”,这是使用typeof的最佳方式

例如:

alert(typeof variable === 'undefined')
如果变量1未定义,它将设置为“”,否则,它将使用变量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'));

把普通的
typeof foo==“undefined”
放在
isDefined(value,[默认值])
函数中你已经知道最好的方法了。更准确地说,“如果Variable1是假的…”
typeof
总是返回字符串,所以对
=
没有特殊需要。是的,没有特殊需要,但我可以放心。我想严格比较字符串,不再进行转换,我知道
typeof
返回字符串。@VisioN
==
=
稍微快一点,所以它实际上是首选。@JanDvorak我做了一个检查。每次新的测试运行(Chrome 22)我的结果都不一样。@jbabey考虑到javascript的松散输入,
=
非常方便,例如
1=='1'
。想象一下,在进行比较之前必须将所有内容转换为相同的类型(这或多或少是
=
所做的)。我更喜欢只在必要的地方使用
===
,在其他地方使用
=
。在ES5中,全局对象的属性是只读的,因此不能将其值设置为任何其他值。
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'));