Конструкция switch
служит для сравнения значения на равенство с различными вариантами.
При этом равенство подразумевается в смысле оператора "===", сравнивать с регулярным выражением или как-то еще switch
не умеет.
Если совпадение найдено, то соответствующий код исполняется до оператора break, который прекращает выполнение switch
и передает управление дальше.
Пример: обычное применение switch
var a = 2+2
switch (a) {
case 3:
alert('Маловато')
break
case 4:
alert('В точку!')
break
case 5:
alert('Перебор')
break
default:
alert('Я таких значений не знаю')
}
Если оператор break
отсутствует, то выполнение продолжается дальше.
Например, предыдущий пример без break
:
Пример: switch без break
var a = 2+2
switch (a) {
case 3:
alert('Маловато')
case 4:
alert('В точку!')
case 5:
alert('Перебор')
default:
alert('Я таких значений не знаю')
}
При a=4 последовательно будут выполнены операторы:
alert('В точку!')
alert('Перебор')
alert('Я таких значений не знаю')
Несколько значений case
можно группировать.
Пример: группировка case
var a = 2+2
switch (a) {
case 4:
alert('Верно!')
break
case 3:
case 5:
alert('Неверно!')
break
default:
alert('Я таких значений не знаю')
}
У меня не работает что-то. Причем по-моему уже второй раз пробую этот код отсюда.
в кавычки заключи значения, с которыми сравниваешь кейсами, вот так:
... case 'test': ...
... case 'megatest': ...
иначе у тебя test и megatest в кейсах воспринимаются как переменные и их содержимое не равно тому, что у тебя находится в id
обведи то, что идёт после case в кавычки.
например:
case 'test':
alert('test')
break
case 'megatest':
alert('megatest')
break
default:
alert('Я таких значений не знаю')
Может стоит писать вместо
case test:
с кавычками?
case "test":
Из статьи неясно, может ли применяться данный оператор для строковых данных.
В Си, Си++ данный оператор применим только для порядковых типов данных.
Всё же это язык "среднего уровня".
На языке же высокого уровня (пример PHP) данный оператор может применяться и для строковых данных.
Попробовал запустить в JS, ответ неоднозначен: с одной стороны ошибка не генерится, с другой, работает оператор непредсказуемо.
Аргументируем, не стесняемся!
Т.е JS - язык "среднего уровня", а PHP - язык "высокого уровня"? Я не хочу холиварить, оскорблять "язык для персональных страничек", но сам факт такого высказывания показывает, что автор не знает ни JS, ни PHP.
Тот факт, что JS менее "нагружен", чем сишки \ кресты \ жаба \ питон лишь указывает на более полную свободу в выборе решения, чем в вышеперечисленных.
Да, не -- я думаю, что "язык среднего" уровня относился к C и C++
по сравнению с JS и PHP это можно считать справедливым.
Хотя на самом деле все указанные языки являются языками высокого уровня.
Языком среднего уровня условно можно считать байт-код Java и управляемый код .Net
+++
в FireFox:
похоже сравнение типов здесь c использованием оператора "===".
Во всех ли бразерах так?
Да, оператор идентичности.
То же самое что и if(){}else if(){}else if(){}else{}
Не совсем так. Switch можно считать заменной if () else if () ... только, если используется оператор break
И есть еще одно существенное отличие:
комбинация
будет работать, как:
а не как:
А есть ли возможность поставить интервал?
Например Case 5 -10 (То есть, 5, 6, 7, 8, 9, 10. Дефис я поставил для примера, я понимаю что это математическая операция. А есть символы интервала?)
case x>5:
case x<10:
// some code here
break
Ваш код равнозначен:
А значит код выполнится в любом случае! Даже при x = -100500
А вот в таком примере:
case x>5:
case x<10:
// some code here
break
условия не надо брать в скобки?
case (x>5):
case (x<10):
// some code here
break
Я попросил бы добавить в статью пример того, как работать с интервалами (т.е. "%переменная% %/= (необходимое подчеркнуть, лол)% %число%").
Да, решение предложенное в комментариях, в принципе очевидно, но таки и до него нужно додуматься. Да, хорошо, что оно на страничке (пусть и в комментариях) есть.
Но таки в самой статье смотрелось бы дивно.
Ребята скажите, почему у меня не работает. Хочу проверить какой у пользователя браузер и вывести сообщение.
Я уже и так и эдак не могу найти ошибку, а может это вообще не будет работать.
(Только switch, if-else и другие регулярные выражения не предлагать)
Видимо потому что в q1 у вас массив, в нулевом элементе которого - ожидаемое
аффигеть, спасибо!
.match() как бы много совпадений нашел и вернул массив.
string.match() всегда возвращает массив.
А мне вот интерсно сработает ли вот такой вот код:
Немного другой код делал, но похожий) Калькулятор.
Все работает!
Если вы про то, что в case много писать
А можно как в Delphi после слова case перечислять несколько значений?
А можно сделать что бы файл работал как в php типа file.html?id=id ?
а как сделать, чтобы при дефолтном варианте ничего не менялось (выполнялось все как до введения свитча).
а то я не указываю дефолт, у меня и для остальных значений выполняется код, что я описал для одного варианта
Возможно ли конструкции делать вложенными?
например
Сам выяснил, что можно
Такое впечатление, что тут хим. лаборатория ядерных исследований и попытка изменить код может привести к техногенной катастрофе! Зачем спрашивать, "а получится?!" или "а такое будет работать?!". Хре...вы программисты! А самим попробовать?! А если вам вналом даже код свой протестировать - вы не программисты.
А такой вариант прокатит?
В примере забыли поставить точки с запятыми после каждого break
"А такой вариант прокатит?"
Меня всегда удивлял этот вопрос. javaScript же компилируется в браузере. Почему бы не проверить свой кусок кода... А если не прокатит - ответа консоли иногда хватает, чтобы понять в чем дело.
Другое дело - задавать вопросы "почему не работает" и "почему результат некорректный". С эти консолька не всегда справляется.
Мучаюсь как могу, уже не знаю что делать, вначале строил это на if и else, потом решил сделать компактнее со switch. Чего я пытаюсь добиться? Выбрал JPG, нажал на кнопку и написалось JPG. Выбрал PNG, нажал на кнопку и написалось PNG. Начальное значение в теге select как вы видите JPG и его он выводит без проблем, но при нажатии кнопки с выбранным PNG он высвечивает LOL - т.е. то что находится в default. Желательно не тупо сказать "вот так", а объяснить почему именно "вот так".
Проблема в селекторе $('option') - он выбирает все option'ы на странице, а тебе нужен активный. Добавь к селектору фильтр :selected, а именно $('option:selected').
для уменьшения вышеизложенных вопросов.
"выполняемый блок кода" в
сработает только, если
(switch_expression) === (case_expression)
вернетtrue
.Вывести окно для ввода текста, после введения числа выходит введенное число, и вычисляется произведение этого числа на число больше его на 1. (например ввели 7, выходит 7 и 7*(7+1)=56)
Подскажите пожалуйста где можно найти описание данной конструкции:
return {
'case1' : 'value1',
...
'caseN' : 'valueN'
}[myVar]
Она работает! И можно ли каким-то образом заменить обьектом то, что в скобках?
Ответ самому себе на вопрос (Автор: Гость (не зарегистрирован), дата: 27 января, 2016 - 14:44) :
Ну конечно же! Все просто!
В большинстве случаев для решения задачи, ее нужно правильно сформулировать!
break в функциях можно заменить на return
AHENYJ SAET
Roksa poznan lazarz
Roksa tomaszow lubelski
Couldn't think of this, but it's nail salons in the area amazing! I wrote several posts similar to this one, but please come and see.
Why don't you try tiny fishing to have much fun time.
Ваш блог фантастический; у вас тут очень интересные посты. спасибо blob opera
Wordle is the game that has me glued to my phone every morning. It's challenging and incredibly enjoyable.
The clever incorporation of resource management adds depth to the Watermelon Game gameplay, requiring players to think ahead and plan their moves strategically.
Basketball legends game, which is exciting and popular among sports games, can be a great option for those who like to have fun.
So there I was, tangled in a web of endless if-else statements in my code, feeling like I was trying to solve a puzzle in the dark. Then, boom, I discovered the switch statement. It was like finding a flashlight. Suddenly, organizing my code wasn't a game of guesswork anymore. I took an online survey about these javascript functions and it turns out this is a well known item.
A game that has never stopped being hot: word games. You can play a lot of word games at word games, Experience with your children and friends will definitely be your good means. Help you learn as well as expand your mind wordle unlimited
Welcome to the arena of instant action and fierce competition! IO games offer a unique blend of simplicity, strategy, and real-time multiplayer mayhem
Puzzle games that test a player's spelling, vocabulary, and word knowledge are called word games. Word games can be played in a variety of formats and with different rules, either alone or with multiple players, online or offline nerdle
That's the truth
Are you ready to show off your rhythm skills? FNF is the perfect game for you! Compete against players online and see who can hit the right notes at the right time!
J'ai envie d'un plan cul à Périgueux et vous ?!
great post https://dahlcore.com/blog/f/navigating-regulatory-compliance-with-security-services
By considering these factors and tips, you can choose the best vinyl siding cleaner that suits your specific cleaning needs and ensures your siding remains clean, protected, and looking its best for years to come.
awesome post https://lookhuman.com/collections/mugs
Your piece eloquently articulates the topic, and I completely endorse your views. I wish more people would appreciate your crusher clicker writing, so I’ll be sure to recommend it to my friends!
Appreciate the practical tips. Very useful and clear. URL
Отправить комментарий
Приветствуются комментарии:Для остальных вопросов и обсуждений есть форум.