Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 03.07.2009, 17:40
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Зачем вообще учитывать Infinity ? Я понимаю NaN.
Ответить с цитированием
  #12 (permalink)  
Старый 03.07.2009, 17:46
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Ну помолчал и будя.

А в чем цимес? isFinite же есть. А если бесконечности должны быть числами, то isNaN есть.
Ответить с цитированием
  #13 (permalink)  
Старый 03.07.2009, 18:00
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Да сбили меня этими Infinity

Вообще вырисовывался такой вариант:
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.
Ответить с цитированием
  #14 (permalink)  
Старый 03.07.2009, 18:02
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Интересней реализовать isNaN
Ответить с цитированием
  #15 (permalink)  
Старый 03.07.2009, 18:15
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Мой вариант выдает те же результаты и работает быстрей.
Ответить с цитированием
  #16 (permalink)  
Старый 03.07.2009, 18:23
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Riim, в твоем варианте есть ошибка:
function isNumber(x) {
	return x < 0 || x > 0 || x == 0;
}
alert(isNumber(false));


Сообщение от Riim
Мой вариант … работает быстрей.
Проверял?
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]);

Последний раз редактировалось Octane, 03.07.2009 в 18:28. Причина: Опечатка в nickname
Ответить с цитированием
  #17 (permalink)  
Старый 03.07.2009, 18:24
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Опять две "m"
Ответить с цитированием
  #18 (permalink)  
Старый 03.07.2009, 18:29
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Octane,
кликай по нику, зачем его писать?
Ответить с цитированием
  #19 (permalink)  
Старый 03.07.2009, 18:29
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

На копейки, но быстрей (Chrome). Если тестировать только на числах (на практике эта функция в основном их будет принимать), то заметно быстрей.
Куски "x > 0" и "x < 0" можно поменять местами, т. к. на практике положительные числа будут чаще.
Ответить с цитированием
  #20 (permalink)  
Старый 03.07.2009, 18:32
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от Octane
в твоем варианте есть ошибка
И в твоем тоже: на null говорит, что это число.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как опознать RegExp. Kolyaj Общие вопросы Javascript 25 04.07.2009 01:41
Как сделать, чтобы 2 ссылки отображались как hover при наведении мышкой на любую? Ava Элементы интерфейса 5 19.05.2009 23:24
как найти нужный объект? `p r o x y jQuery 2 05.05.2009 01:12
форма как в ExtJS 2 magistr_bender Общие вопросы Javascript 0 11.09.2008 16:01
Как прибавлять число к числу? Forgott Общие вопросы Javascript 9 06.05.2008 08:47