我在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'){
我可以用下划线吗?
进行简单的方法答案 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
过滤掉而不是数字。