2013-04-26 15 views
6

私はJavaScriptでこれを持っている:IE8で未定義の値をチェックするにはどうすればよいですか?

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

はクロームで、それはこのことを示しています。これはの予想の動作です。 IE8では

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

、ログはこのことを示しています

LOG: Object Object 
---- 
LOG: String 

なぜIE8は、それが文字列であると考えていますか?私はそれが未定義であるかどうかを知る必要があります。

私にはデフォルト値を設定するコードがたくさんあります。

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

IE8でundefine-dを確認するにはどうすればよいですか?私はこれをすべきか?これはうまくいくようです(そうです...)、それは安くてハッキリのようです。

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

私はを強調して、これを行うことができる簡単な方法はありますか?

+0

「宣言されていますが定義されていません」、「宣言も定義もされていません」のように「未定義」を意味しますか? 2つの異なるもの... – elclanrs

+0

http://stackoverflow.com/questions/690251/what-happened-to-console-log-in-ie8 – jurgemaister

+0

@jurgemaister yea私は知っている...しかし、それは質問とは関係がありません – TIMEX

答えて

5

あなたがこのアプローチを使用することができますが、それはあなたのコードに多くを削減しません:それが0かどう

filters.max_price = filters.max_price || 2000; 

これは、しかし、値を上書きする最善のアプローチは、残っている:

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

===は私の現在のバージョン==よりも優れていますか? IE8でトリプル===動作しますか? – TIMEX

+0

@TIMEXトリプルもタイプを比較し、未定義のタイプは "未定義"です –

+0

IE8では動作しません。 if(filtersof.max_price === 'undefined'){.... IE8はそれをキャッチしません。 – TIMEX

0
値が数値(ワットであるかどうかを確認するには

filters.max_price = filters.max_price || 2000; 

デフォルト値を設定するために、ガード演算子を使用することができますHICH I)が価格をあるはず、あなたはこれもない数としてundefinedを除外します

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

を使用することができます。

関連する問題