Вы можете использовать PInvoke для API Win32, например NetGetDcName , который вернет пустую / пустую строку для машины, не связанной с доменом.
В инструкции switch оцененное значение выражения switch
сравнивается с оцененными значениями случаев. Таким образом, значение raw_value
(число) сравнивается с raw_value & gt; 10.0
(выражение сравнения) и raw_value & gt; 5.0
(выражение сравнения).
Итак, если одно из ваших выражений case не дает число, равное 11.0
, или вы используете выражение
true
, вы всегда получите случай по умолчанию.
Вместо этого используйте простой , если
/ else
:
var raw_value = 11.0; if (raw_value & gt; 10,0) {height = 48; ширина = 36; } else if (raw_value & gt; 5.0) {height = 40; width = 30; } else {height = 16; ширина = 12; }
Нравится это:
var raw_value = 11.0; switch (true) {case (raw_value & gt; 10.0): height = 48; ширина = 36; ломать; case (raw_value & gt; 5.0): height = 40; width = 30; ломать; default: height = 16; ширина = 12; }
Выражения в операторе case
будут оцениваться в true
или false
, и если это соответствует переключатель
условие ... вуаля. [D5] default действует как else
.
Бонус: вы можете инвертировать всю логику, просто заменив true
на ] неверно
. С помощью операторов if ... else if
вам нужно будет редактировать каждое предложение if в отдельности.
Не пытайтесь делать это дома или воспринимайте это слишком серьезно, это просто для сладкого удовольствия ...
function conditionalSwitch (значение, cond, callback / * cond , callback, cond, callback, ... * /) {for (var i = 1; i & lt; arguments.length; i + = 2) {if (arguments [i] (value)) {arguments [i + 1 ](стоимость); вернуть; }}} function test (val) {let width, height; conditionalSwitch (val, (val) = & gt; val & gt; 10, () = & gt; [высота, ширина] = [48,36], (val) = & gt; val & gt; 5, () = & gt; [высота , width] = [40, 30], // Default () = & gt; true, () = & gt; [height, width] = [16, 12]) console.log (ширина, высота); } test (4.9); // 12 16 тест (5.1); // 30 40 тест (10.1); // 36 48
Нет, инструкция switch
не работает так. Однако это утверждение не всегда проще. Например, версия switch
принимает 15 строк:
var raw_value = 11.0; switch (raw_value) {case (raw_value & gt; 10.0): height = 48; ширина = 36; ломать; case (raw_value & gt; 5.0): height = 40; width = 30; ломать; default: height = 16; ширина = 12; ломать; }
и «long» if / else
version only 11:
var raw_value = 11,0; if (raw_value & gt; 10,0) {height = 48; ширина = 36; } else if (raw_value & gt; 5.0) {height = 40; width = 30; } else {height = 16; ширина = 12; }
Итак, в вашем случае лучше использовать второй, чем первый ...
break
, это так же чисто, как оригинал. – user 15 December 2010 в 23:25