2016-06-01 2 views
2

Мне нравится использовать const и мне нравится switch заявления.Является ли это предложение переключателя IIFE причиной ненужных накладных расходов?

примечание: Ниже приведен упрощенный пример. Код в каждом случае немного сложнее, а возвращаемый объект является компонентом JSX.

Рассмотрим это:

let retval // can't declare as const! 
switch (value) { 
    case 'a': 
    retval = 'aa' 
    break 
    case 'b': 
    retval = 'bb' 
    break 
    case 'c': 
    retval = 'cc' 
    break 
    case 'd': 
    retval = 'dd' 
    break 
    default: 
    retval = 'xx' 
} 

// mistakenly by purpose change retval here.. 
retval = function nope(){ return null } 

но я DO хотите использовать мои consts, сравните это:

const retval = (() => { 
    switch (value) { 
    case 'a': 
     return 'aa' 
    case 'b': 
     return 'bb' 
    case 'c': 
     return 'cc' 
    case 'd': 
     return 'dd' 
    default: 
     return 'xe' 
    } 
})() 

retval = null // nope you are safe here!, raises error 

ли это вызывает излишнюю нагрузку? ... или будет ли его использовать двигатель?

ответ

2

Вы можете использовать объект со значением по умолчанию вместо оператора switch.

const retval = {a: 'aa', b: 'bb', c: 'cc', d: 'dd'}[value] || 'xe'; 

или с функцией, которая только в конце выполнен

var value = 'd'; 
 
const retval = ({a:() => 'aa', b:() => 'bb', c:() => 'cc'}[value] || (() => 'xe'))(); 
 
console.log(retval);

+0

Во всяком случае, это изящное решение - в некоторых случаях. Но все же это означает, что все обрабатывается и хранится в памяти, не так ли? Я создаю сложные компоненты JSX и возвращаю их. Мне не нужно создавать все компоненты, только нужные. Используя этот подход, они построят все сначала, верно? – Qwerty

+1

it зависит от содержания. если is является функцией, то может быть выполнено только желаемое. –

+0

Я фактически использую функции в этих случаях, поэтому этот подход действительно очень крут! Добавьте, пожалуйста, заметку к вашему ответу, чтобы я мог дать +1. В любом случае, мне все равно хотелось бы услышать слово по моим двум вопросам, это меня действительно интересует, в том числе разница между этим подходом и обычным «переключателем», особенно с точки зрения скорости обработки, эффективности и ресурсов. – Qwerty