var foo;
console.log(typeof foo); //"undefined"
if(typeof foo === 'undefined')
console.log(1);
if(!foo)
console.log(2);
В моем примере выше консоль будет регистрировать как «1», так и «2», поскольку undefined
оценивается как false
. То же самое произойдет с null
, NaN
, ""
(пустая строка) и т. Д.
Является ли использование оператора typeof
более распространенным для сравнения строкового значения вместо использования оцененного логического значения? Есть ли разница кроме читабельности? Есть плюсы и минусы?
1 ответ
Нет серебряной пули, и это полностью зависит от ваших целей.
Если вам нужно знать, что переменная является "ложной" - вы используете if (!var)
, если вам нужно точно знать, null
, 0
, пустая строка или что-то еще - вы используете if (var === null)
typeof
тогда? typeof foo === 'null'
против foo === null
typeof
вместо ===
заключается в том, что он позволяет вам проверять наличие необъявленных переменных. test === undefined
вызовет ошибку ReferenceError, если нет тестовой переменной, а typeof test
вернет "undefined".
!var
обычно избегают, - это передача необязательных параметров функции. Если параметр не определен, вы будете использовать значение параметра по умолчанию, если это что-то вроде пустой строки, вы будете использовать это вместо этого.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.