Вместо написания функции, выполняющей эту проверку, вы должны просто использовать это выражение:
(number < 0)
Javascript оценит это выражение, сначала попытавшись преобразовать левую часть в числовое значение, прежде чем проверять, меньше ли оно нуля, что, по-видимому, является тем, что вы хотели.
Технические характеристики и детали
Поведение для x < y
указано в §11.8.1 Оператор Меньше чем (<
) , который использует §11.8.5 Абстрактный алгоритм реляционного сравнения .
Ситуация сильно отличается, если и x
, и y
являются строками, но поскольку правая часть уже является числом в (number < 0)
, сравнение попытается преобразовать левую часть в число для сравнивать численно. Если левая часть не может быть преобразована в число, результатом будет false
.
Обратите внимание, что это может дать разные результаты по сравнению с вашим подходом, основанным на регулярных выражениях, но в зависимости от того, что вы пытаетесь сделать, это может в конечном итоге сделать правильную вещь.
"-0" < 0
равно false
, что согласуется с тем фактом, что -0 < 0
также false
(см .: подписанный ноль ).
"-Infinity" < 0
равно true
(бесконечность подтверждена)
"-1e0" < 0
равно true
(допускаются литералы научных обозначений)
"-0x1" < 0
равно true
(допускаются шестнадцатеричные литералы)
" -1 " < 0
равно true
(допускаются некоторые формы пробелов)
Для каждого из приведенных выше примеров метод регулярных выражений будет иметь противоположную оценку (true
вместо false
и наоборот).
Ссылки
Смотри также
Приложение 1: Условный оператор ?:
Следует также сказать, что утверждения этой формы:
if (someCondition) {
return valueForTrue;
} else {
return valueForFalse;
}
может быть реорганизован для использования троичного / условного оператора ?:
( §11.12 ) для простого:
return (someCondition) ? valueForTrue : valueForFalse;
Идиоматическое использование ?:
может сделать код более кратким и читабельным.
Похожие вопросы
Приложение 2: Функции преобразования типов
Javascript имеет функции, которые вы можете вызывать для выполнения различных преобразований типов.
Примерно так:
if (someVariable) {
return true;
} else {
return false;
}
Может быть реорганизован с помощью оператора ?:
для:
return (someVariable ? true : false);
Но вы также можете упростить это до:
return Boolean(someVariable);
Это вызывает Boolean
как функцию ( §15.16.1 ) для выполнения желаемого преобразования типа. Вы также можете вызвать Number
как функцию ( §15.17.1 ), чтобы выполнить преобразование в число.
Похожие вопросы