Зачем вообще учитывать Infinity ? Я понимаю NaN.
|
Ну помолчал и будя.
А в чем цимес? isFinite же есть. А если бесконечности должны быть числами, то isNaN есть. |
Да сбили меня этими Infinity :stop:
Вообще вырисовывался такой вариант: var a = NaN; var b = 1; var c = {}; var d = Infinity; function isNumber(x) { return ! isNaN(x * 1); } alert([isNumber(a), isNumber(b), isNumber(c), isNumber(d)]); тут isNumber(Infinity) выдает true. В итоге мы пришли к реализации функционала встроенной функции isFinite. |
Интересней реализовать isNaN :)
|
Мой вариант выдает те же результаты и работает быстрей.
|
Riim, в твоем варианте есть ошибка:
function isNumber(x) { return x < 0 || x > 0 || x == 0; } alert(isNumber(false)); Цитата:
function isNumber(x) { return ! isNaN(x * 1); } function isNumber1(x) { return x < 0 || x > 0 || x === 0; } var t1 = new Date().getTime(), i = 100000; while (i--) { isNumber(NaN); isNumber(1); isNumber({}); } t1 = new Date().getTime() - t1; var t2 = new Date().getTime(); i = 100000; while (i--) { isNumber1(NaN); isNumber1(1); isNumber1({}); } t2 = new Date().getTime() - t2; alert([t1, t2]); |
Опять две "m" :(
|
Octane,
кликай по нику, зачем его писать? |
На копейки, но быстрей (Chrome). Если тестировать только на числах (на практике эта функция в основном их будет принимать), то заметно быстрей.
Куски "x > 0" и "x < 0" можно поменять местами, т. к. на практике положительные числа будут чаще. |
Цитата:
|
Часовой пояс GMT +3, время: 08:01. |