2012-07-25 60 views
1

我有一個對象屬性,可能包含或不包含數字,該數字可能不等於0。就目前而言,我有這樣的:JavaScript測試如果值是一個數字和大於0的數字

var TheVar = parseInt(SomeObject.SomeVar, 10); 

if (!TheVar > 0) { 
    TheVar = "-"; 
} 

我想TheVar是一個正數或"-"。我只是想知道我的條件聲明是否會涵蓋所有情況?

感謝您的建議。

+1

作爲一個數字你會接受什麼?如果它可以被成功強制轉換爲數字,並且不會導致'NaN',你會接受它嗎?或者你是否需要一些已經是「數字」原始值的東西? – 2012-07-25 19:30:05

+1

......你因爲某種原因沒有迴應,所以我會給你一些不是原始數字的例子,但會被'>'操作符成功強制轉換爲正數。一個數字字符串......'「123」',數組中的數字...'[123]',數組中的數字字符串...'[「123」]',十六進制字符串...'「0x15」 ',數組中的十六進制字符串...'[「0x15」]',正布爾...'true',一個Number對象包裝...'new Number(123)'。也許還有其他的我也沒有想到。 – 2012-07-25 19:48:08

+0

@amnotiam:我正在吃晚餐。我明白了,感謝您的意見,提出了您的評論。 – frenchie 2012-07-25 20:43:45

回答

4

不可以。您沒有括號。

if(!(TheVar > 0)) 

NaN > 0返回false,所以if條件會經過。

+0

啊!比對不起更安全;謝謝你的提示。 – frenchie 2012-07-25 19:31:08

+0

它實際上會產生'boolean> 0',其中'boolean'是'!'運算符的結果,因爲'!'比'>'具有更高的優先級。 ...但解決方案是正確的。 :) – 2012-07-25 19:34:37

+0

......哦,也許我誤解了你的'NaN> 0'語句。我明白你現在說的話。唯一的問題是,如果OP想要強制,這是發生在這裏。 '[123]> 0; // true' – 2012-07-25 19:38:15

相關問題