我有一個對象屬性,可能包含或不包含數字,該數字可能不等於0
。就目前而言,我有這樣的:JavaScript測試如果值是一個數字和大於0的數字
var TheVar = parseInt(SomeObject.SomeVar, 10);
if (!TheVar > 0) {
TheVar = "-";
}
我想TheVar
是一個正數或"-"
。我只是想知道我的條件聲明是否會涵蓋所有情況?
感謝您的建議。
我有一個對象屬性,可能包含或不包含數字,該數字可能不等於0
。就目前而言,我有這樣的:JavaScript測試如果值是一個數字和大於0的數字
var TheVar = parseInt(SomeObject.SomeVar, 10);
if (!TheVar > 0) {
TheVar = "-";
}
我想TheVar
是一個正數或"-"
。我只是想知道我的條件聲明是否會涵蓋所有情況?
感謝您的建議。
不可以。您沒有括號。
if(!(TheVar > 0))
NaN > 0
返回false,所以if
條件會經過。
啊!比對不起更安全;謝謝你的提示。 – frenchie 2012-07-25 19:31:08
它實際上會產生'boolean> 0',其中'boolean'是'!'運算符的結果,因爲'!'比'>'具有更高的優先級。 ...但解決方案是正確的。 :) – 2012-07-25 19:34:37
......哦,也許我誤解了你的'NaN> 0'語句。我明白你現在說的話。唯一的問題是,如果OP想要強制,這是發生在這裏。 '[123]> 0; // true' – 2012-07-25 19:38:15
作爲一個數字你會接受什麼?如果它可以被成功強制轉換爲數字,並且不會導致'NaN',你會接受它嗎?或者你是否需要一些已經是「數字」原始值的東西? – 2012-07-25 19:30:05
......你因爲某種原因沒有迴應,所以我會給你一些不是原始數字的例子,但會被'>'操作符成功強制轉換爲正數。一個數字字符串......'「123」',數組中的數字...'[123]',數組中的數字字符串...'[「123」]',十六進制字符串...'「0x15」 ',數組中的十六進制字符串...'[「0x15」]',正布爾...'true',一個Number對象包裝...'new Number(123)'。也許還有其他的我也沒有想到。 – 2012-07-25 19:48:08
@amnotiam:我正在吃晚餐。我明白了,感謝您的意見,提出了您的評論。 – frenchie 2012-07-25 20:43:45