疯狂的javascript问题:实际上是undefined!== undefined!

时间:2011-04-18 13:58:45

标签: javascript jquery undefined

在有人询问之前,我已经搜索了现有问题并找到this question,但答案是undefined被设置为null,而这不是这种情况。

这是我的代码:

check_availability = function () {
    var value = $('#contact_type').val();
    if (value !== undefined) {
        // do some stuff
    }
}

简单吧?我有一个<select id="contact_type"></select>,其中包含通过ajaxy填充的选项。最初选项列表为空,因此jQuery val()返回undefined。 到目前为止一切都很好。

if块中的代码始终执行外。我在FireBug的第3行贴了一个断点,我明白了:

undefined weirdness

谁能告诉我发生了什么?

P.S。这是Firefox 4.0


编辑:我知道有很多方法可以达到相同的结果,我更感兴趣的是为什么值根据FireBug未定义,但是接下来是!== undefined。< / p>

6 个答案:

答案 0 :(得分:3)

只需检查value的真实性。

if (value) {
    // sexy times
}

BTW,当null不包含undefined时,jQuery返回<select>,而不是<option>http://jsfiddle.net/mattball/cQ83z/

答案 1 :(得分:2)

val()永远不会undefinedhttp://jsfiddle.net/ThiefMaster/UmZhG/

如果<select>没有选项,则为null;否则总会选择一个选项。

Fyi,value == undefinednull == undefined起为真(即使null !== undefined

答案 2 :(得分:1)

试试这个:

if (typeof(value) != 'undefined') {
    // do some stuff
}

希望有所帮助。

答案 3 :(得分:1)

===运算符不会进行可能导致错误的类型转换。试试==而不是。或者与null比较。

答案 4 :(得分:1)

以这种方式尝试......

if (value != undefined) {
        // do some stuff
    }

答案 5 :(得分:0)

使用此:

if($("#contact_type").val() != ""){
//does have a value
}else{
//No value there
}