6

我的 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?我应该这样做吗?这似乎有效(耶......),但它似乎便宜且hacky。

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

有没有一种简单的方法可以用下划线做到这一点?

4

2 回答 2

5

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

filters.max_price = filters.max_price || 2000;

但是,如果值为 0,这将覆盖该值。最好的方法仍然是:

if(typeof filters.max_price === 'undefined'){
    // init default
}
于 2013-04-26T08:09:51.437 回答
0

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

filters.max_price = filters.max_price || 2000;

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

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

这也将undefined作为非数字过滤掉。

于 2013-04-26T08:09:58.067 回答