2015-03-01 2 views
1

кодовой базы я работаю над содержит множество применений JavaScript «оператора по умолчанию» в таких как:Лучшая замена для var x = y || ложь

var x = y || false; 

Я задаюсь вопросом, что наилучшая замена использовать для того, чтобы гарантировать, что значение никогда undefined, null и т. д. Должен ли я заменить их на «false» и проверить на строку? Должен ли я заменить их на свой длинный экземпляр (явные проверки для null и undefined)? Или каждый случай использования должен быть оценен для чего-то, что я не принимаю во внимание?

+6

Что случилось с этим способ сделать это? – jlowcs

+1

Он, кажется, боится легальных значений, которые считаются ложными, как 0 '' – Hurda

+1

'null' и' undefined' также являются ложными, поэтому, если вы собираетесь использовать инструкцию if для проверки значения позже, вам не нужно использовать 'false' по умолчанию. Использование OR таким образом обычно выполняется при установке значения по умолчанию, правдивого. Если вам явно не нужно «false», на самом деле нет смысла использовать его в качестве значения по умолчанию, так как это falsy * в любом случае, если OR продолжается. – adeneo

ответ

1

Чтобы установить, не falsy по умолчанию, когда ваш вклад может быть действительным falsy значение, один способ сделать два теста

if (!x && x !== 0) { 
    x = 1; // 1 is the default value but 0 is a valid input 
} 

Преимущество делать это так, что вы можете исключить недействительный falsy значения, например NaN


При этом, вы можете быть лучше литье или типа проверки

if (typeof x !== 'number') x = 1; 

или

x = +x; 
if (x !== x) x = 1; // NaN goes to default 
Смежные вопросы