Я хочу проверить, если число отрицательное. Я ищу самый простой способ , поэтому заранее определенная функция javascript была бы лучшей, но я еще ничего не нашел, вот что у меня есть, но я не думаю, что это хороший способ:
function negative(number) {
if (number.match(/^-\d+$/)) {
return true;
} else {
return false;
}
}
Вместо того, чтобы писать функцию для этой проверки, вы должны просто иметь возможность использовать это выражение:
(number < 0)
Javascript оценит это выражение, сначала попытавшись преобразовать левую часть в число значение, прежде чем проверять, меньше ли оно нуля, что, кажется, то, что вы хотели.
Поведение для x < y
указано в §11.8.1 Оператор «меньше» (<
), который использует §11.8.5 Алгоритм абстрактного реляционного сравнения .
Ситуация сильно отличается, если и x
, и y
являются строками, но поскольку правая часть уже является числом в (число < 0)
, сравнение попытается преобразовать левую часть в число для численного сравнения. Если левая часть не может быть преобразована в число, результатом будет ложь
.
Обратите внимание, что это может дать разные результаты по сравнению с вашим подходом, основанным на регулярных выражениях, но в зависимости от того, что вы пытаетесь сделать, это может в конечном итоге сделать правильно.
"-0" < 0
есть ложь
, что согласуется с тем фактом, что -0 < 0
также ложь
(см.: ноль со знаком). "-бесконечность" < 0
равно истине
(бесконечность признается)"-1e0" < 0
равно истине
(литералы научной записи принято)"-0x1" < 0
равно true
(допускаются шестнадцатеричные литералы)" -1 "< 0
равно true
(некоторые разрешены формы пробелов)Для каждого из приведенных выше примеров метод регулярных выражений будет иметь противоположное значение (true
вместо false
и наоборот).
<
)?:
Также следует сказать, что операторы такой формы:
if (someCondition) {
return valueForTrue;
} else {
return valueForFalse;
}
может быть реорганизован для использования тернарного/условного оператора ?:
(§11.12) для простого:
return (someCondition) ? valueForTrue : valueForFalse;
Идиоматическое использование ?:
может сделать код стал более лаконичным и читабельным.
В JavaScript есть функции, которые вы можете вызывать для выполнения различных преобразований типов.
Что-то вроде следующего:
if (someVariable) {
return true;
} else {
return false;
}
Можно преобразовать с помощью оператора ?:
в:
return (someVariable ? true : false);
Но вы также можете упростить это до:
return Boolean(someVariable);
Это вызывает Boolean
как функцию (§15.16.1) для выполнения желаемого преобразования типа. Аналогичным образом вы можете вызвать Число
как функцию (§15.17.1), чтобы выполнить преобразование в число.
Как насчет чего-то вроде просто как:
function negative(number){
return number < 0;
}
Часть * 1
предназначена для преобразования строк в числа.
function negative(n) {
return n < 0;
}
Ваше регулярное выражение должно нормально работать со строковыми числами, но это, вероятно, быстрее. (отредактировано из комментария в аналогичном ответе выше, преобразование с помощью +n
не требуется.)