Ретурн в свиче можно?
Здравствуйте!
Можно ли использовать 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, время: 18:51. |