現在,我使用這個功能來確定一個數是否爲整數:有沒有一種更有效率或更好的方式來確定一個數字是否是一個整數?
function isInteger(input){
return (input%1==0);
}
是有沒有更有效的方式來做到這一點?我知道這裏有一個內置的javascript函數,但它在某些IE版本中不起作用。
現在,我使用這個功能來確定一個數是否爲整數:有沒有一種更有效率或更好的方式來確定一個數字是否是一個整數?
function isInteger(input){
return (input%1==0);
}
是有沒有更有效的方式來做到這一點?我知道這裏有一個內置的javascript函數,但它在某些IE版本中不起作用。
根據jsPerf,~~
(repeated bitwise NOT)和<< 0
(移位0位向左)是在瀏覽器中更快:
function isInteger(input) {
return (~~input === input);
}
function isInteger2(input) {
return (input << 0 === input);
}
警告: JavaScript按位運算符強制其操作數爲signed 32-bit integers,所以這種方法od只能安全用於
Math.pow(2, 31) -1
(2147483647)。如果您不能保證,請使用其他方法。
另一方法中,n % 1 === 0
和Math.floor(value) === value
較慢40-50%和Number.isInteger
是遠遠落後。
但是,它們都「非常快」。除非您必須檢查批號,否則這些方法都不可能是您應用程序的瓶頸。
function isInteger(input){
Number.isInteger(input)
}
Number.isInteger = Number.isInteger || function(value) {
return typeof value === "number" &&
isFinite(value) &&
Math.floor(value) === value;
};
這裏更有效的方式做到這一點:[鏈接](https://jsperf.com/numbers-and-integers) –
也許你想用'返回的typeof輸入===「number'' ,它支持IE [檢查MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof) –
@VitaliiStrimbanu一個數字不一定是整數,例如,看看'3.14'。 – vlaz