2017-02-04 91 views
0

JavaScript中是否存在基元或數據結構,與數字相比總是會返回true?即Javascript數據結構/原始數據與數字相比始終會返回true

theVariable > x //true 

其中x是整數類型的任何數字?

+1

也許'-Infinity'? – CodinCat

+1

某些對象將返回「true」。例如,'new Date()> 4'爲'true','typeof new Date()'爲'「object」'。不知道爲什麼你想要比較非數字類型和數字。 –

+2

@CodinCat -Infinity不大於任何數字:p –

回答

0

其中x是整數類型的任何數字?

Integer是不是在ECMAScript中一個type,所以如果這是一個條件,那麼你首先需要測試是否X是一個整數,所以像:

Number.isInteger(value) && Infinity > value; 

將做的工作。

isInteger測試是嚴格的,所以如果就像是一個字符串「2」,它將失敗。如果字符串應該被允許,然後轉換爲數字第一,例如:

Number.isInteger(+value) && Infinity > value; 

要使用Number.isInteger,需要對2015年的ECMAScript支持,所以IE被原諒,MDN有polyfill

如果你只是想測試,如果是一個有限整數,那麼就:

Number.isInteger(value); 

這對於無限和之間負無窮並適用於所有的整數返回false(可以用ECMAScript表示)。