Есть сокращенная версия следующее:Javascript Shorthand
(a > 0 && a < 1000 && b > 0 && b < 1000 && c > 0 && c < 1000)
Большое спасибо.
Есть сокращенная версия следующее:Javascript Shorthand
(a > 0 && a < 1000 && b > 0 && b < 1000 && c > 0 && c < 1000)
Большое спасибо.
Нет, на самом деле нет сокращений. Нет простого встроенного способа указания такого сравнения, чтобы его можно было повторить для разных переменных.
Вы могли бы сделать функцию для проверки значений:
function between(min, max, values) {
for (var i = 2; i < arguments.length; i++) {
if (arguments[i] < min || arguments[i] > max) return false;
}
return true;
}
и вызвать его с помощью:
between(1, 999, a, b, c)
вы могли бы использовать один &:
(a > 0 & a < 1000 & b > 0 & b < 1000 & c > 0 & c < 1000)
ничего другого мне приходит в голову
... Это ужасная идея и в любом случае не очень помогает. – delnan 2010-11-27 12:57:42
& это не то же самое, что и && - хотя оно будет работать одинаково, в большинстве случаев оно побитовое, тогда как && является логическим И. Даже там, где он работает одинаково, у побитового оператора будет больше накладных расходов, так как требуется переключение между логическими и двоичными сравнениями – Macros 2010-11-27 13:00:57
-1 никогда не делайте этого, если вы на самом деле не выполняете побитовые операции. – BGerrissen 2010-11-27 13:08:54
Number.prototype.isInRange = function(low, high) {
return this > low && this < high;
}
Теперь попробуйте это:
(a.isInRange(0,1000) && b.isInRange(0,1000) && c.isInRange(0,1000))
Если вы хотите, вы можете переименовать функцию по вашему вкусу, чтобы сохранить еще несколько нажатий клавиш. Я пойду с удобочитаемостью :) :)
Это на самом деле длиннее, всего лишь менее повторяющееся. : o) – deceze 2010-11-27 13:03:20
Существует много способов сделать это. Лично если бы я делал это много, я бы определить функцию один раз:
function between(val, min, max) { return min < val && val < max; }
Тогда ваши if
чеки выглядеть следующим образом:
if(between(a, 0, 1000) && between(b, 0, 1000) && between(c, 0, 1000))
Альтернативой является добавить метод на сами цифры:
Затем используйте его как t его:
if(a.between(0, 1000) && b.between(0, 1000) && c.between(0, 1000))
Хотя это намного чище ... или вы можете пойти другим путем в целом.
Примечание: обоих этих подходов для вы. Они будут работать медленнее, их немного легче поддерживать ... однако, компилятор закрытия включил большинство из них с расширенными оптимизациями.
Если вы беспокоитесь о количестве сравнений, нет ярлыка. Если вы хотите уменьшить количество символов в сравнении, вы можете написать функцию «от нуля до 2000» и вызвать ее три раза.
Если нет никаких шансов, что a,b,c
будет отрицательным числом, то вы можете сделать это:
(a && b && c && a < 1000 && b < 1000 && c < 1000)
Или, если вы хотите немного почистить его, вы можете добавить строку ломается, если вы не против практики.
(a > 0 && a < 1000 &&
b > 0 && b < 1000 &&
c > 0 && c < 1000)
Не короче, но гораздо легче читать.
Все решения здесь будут медленнее, чем просто сделать эту большую инструкцию if. – epascarello 2010-11-27 13:30:14