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 を確認するにはどうすればよいですか? これを行う必要がありますか?これは機能しているように見えますが (イェーイ...)、安くてハッキーなようです。

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 に答える