Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Не выполняются условия из блока switch
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Не выполняются условия из блока switch

Страниц (1): [1]
 

1. Telnet - 21 Декабря, 2016 - 18:16:51 - перейти к сообщению
Всем привет
Разместил простой пример тут

https://jsfiddle[dot]net/vipTelnet/2hjqkf9t/1/

Не могу понять почему сумма не считается.
2. Ch_chov - 21 Декабря, 2016 - 19:30:04 - перейти к сообщению
В case нельзя записывать выражения. Используйте if / else или тернарный оператор.
3. Telnet - 21 Декабря, 2016 - 19:32:39 - перейти к сообщению
О тут [url]https://learn[dot]javascript[dot]ru/switch [/url]
написано что
В case могут быть любые выражения, в том числе включающие в себя переменные и функции.

я этот пример переделывал с php там все именно так и работает.
На if то я переделал и заработало но почему тут в яваскрипте не работало через switch я так и не понял.
4. Ch_chov - 22 Декабря, 2016 - 08:08:59 - перейти к сообщению
Да точно выражение может быть в case, но его результат все равно будет сравниваться с "основой".

CODE (javascript):
скопировать код в буфер обмена
  1. switch (true) {
  2.  
  3.   case quantity < 5:
  4.     summa = quantity * 10;
  5.     break;
  6.  
  7.   case quantity > 5:
  8.     summa = quantity * 2;
  9.     break;  
  10.          
  11. }
  12.  


Или так

CODE (javascript):
скопировать код в буфер обмена
  1. switch (quantity < 5) {
  2.  
  3.   case true:
  4.     summa = quantity * 10;
  5.     break;
  6.  
  7.   case false:
  8.     summa = quantity * 2;
  9.     break;            
  10. }
  11.  



Лучше конечно так:
CODE (javascript):
скопировать код в буфер обмена
  1. var summa = quantity * (quantity < 5 ? 10 : 2);

 

Powered by ExBB FM 1.0 RC1