如何在IE8中检查未定义的值?

时间:2013-04-26 08:05:28

标签: javascript jquery object internet-explorer-8

我在javascript中有这个:

console.log(filters);
console.log('----');
console.log(filters.max_price);

在Chrome中,它显示了这一点。这是预期的行为。

Object {max_price: undefined, sort_by: undefined, distance: undefined, start: undefined, num: undefined}
----
undefined 

在IE8中,日志显示:

LOG: Object Object
----
LOG: String

为什么IE8认为它是一个字符串?我需要知道它是否未定义。

我有很多设置默认值的代码。

if(typeof filters.max_price == undefined){ //I use this technique a lot! 
    filter.max_price = 2000; 
}

如何在IE8中检查undefine-ds?我应该这样做吗?这似乎有用(可是......),但看起来便宜而且很容易。

if(!filters.max_price || typeof filters.max_price == 'undefined'){

我可以用下划线吗?

进行简单的方法

2 个答案:

答案 0 :(得分:5)

你可以使用这种方法,但它不会减少你的代码:

filters.max_price = filters.max_price || 2000;

但如果它为0,则会覆盖该值。最佳方法仍然是:

if(typeof filters.max_price === 'undefined'){
    // init default
}

答案 1 :(得分:0)

您可以使用保护运算符设置默认值:

filters.max_price = filters.max_price || 2000;

要检查该值是否为数字(我认为价格是),您可以使用

if(isNaN(filters.max_price)) {
    //enter code here
}

这也会将undefined过滤掉而不是数字。