Ретурн в свиче можно?
Здравствуйте!
Можно ли использовать return внутри switch ? Вот есть такая функция:
function test(id) {
let k;
switch (id) {
case 'in_1': k = [1, 2, 3, 4]; break;
case 'in_2': k = [1, 5, 3, 1]; break;
case 'in_3': k = [7, 4, 1, 3]; break;
}
return k;
}
Можно ли эту функцию написать вот так:
function test(id) {
switch (id) {
case 'in_1': return [20,180, 200,160]; break;
case 'in_2': return [110,20, 20,180]; break;
case 'in_3': return [110,20, 200,160]; break;
}
}
Нужны ли в таком случае операторы break ? Код вроде как работает. Но тут подсветка редактора VSCode делает все бреки полупрозначными (типа как ненужное) и пишет подсказку на бреках: Обнаружен недостижимый код. Как лучше и правильней? |
Недосмотрел, это подсказка в редакторе для ts, a я пишу на js.
|
Switch будет прерван, так что break можно опустить, но первое более ожидаемое по смыслу.
|
laimas,
то есть лучше делать через переменную и первый вариант более приемлим? |
Цитата:
|
laimas,
Спасибо за подсказку! Я понял - идём по класике с первым вариантом. |
MC-XOBAHCK,
:-?
function test(id) {
return {
'in_1': [1, 2, 3, 4],
'in_2': [1, 5, 3, 1],
'in_3': [7, 4, 1, 3]
}[id]
}
|
Не слушай маразматиков, они те ещё скажут, что больше одного return на функцию нельзя.
Конструкции вида
function test(id) {
switch (id) {
case 'in_1':
return [20,180, 200,160];
case 'in_2':
return [110,20, 20,180];
case 'in_3':
return [110,20, 200,160];
}
}
абсолютно валидны, легко читаемы, высокопроизводительны и удобны.Единственное, на что стоит обращать внимаете - здравый смысл: например мешать return и break действительно нежелательно, чтоб не запутаться; также если не предполагается никаких вычислений или вызовов - то лучше использовать константный объект с набором значений и просто брать их по ключу. (только не так, как написал рони, у него объект целиком заново создаётся каждый вызов) |
Цитата:
|
рони,
Прикольно, но я этот код понял только после того как ниже Aetae прокомментировал что это объект. Теперь вижу и понимаю что к чему. Спасибо за пример! Aetae, Спасибо вам за пояснение. Я свичёвые конструкции в коде люблю - с ними удобно. Но мне ни кто не говорил что больше одного return на функцию нельзя. Это я сам решил спросить у более опытных людей не будет ли ошибкой если я так ретурны расставлю. |
| Часовой пояс GMT +3, время: 14:19. |