в чем разница между 'typeof !== undefined' и '!= null' в javascript
Ответы
Оба варианта служат для проверки состояния переменной, но они имеют отличия:
Проверка typeof !== 'undefined'
проверяет, была ли переменная объявлена и инициализирована, и не равна ли она значению undefined
.
if (typeof variable !== 'undefined') {
// переменная определена
}
typeof variable
возвращает строку 'undefined'
, если переменная не была объявлена или была объявлена, но не инициализирована. Использование typeof
не вызывает ошибки, если переменная не существует. Это важно, если вы не уверены, объявлена ли переменная.
let a;
console.log(typeof a !== 'undefined'); // true, a объявлена, но не инициализирована
console.log(typeof b !== 'undefined'); // false, b не объявлена
Проверка != null
проверяет, равно ли значение переменной null
или undefined
(из-за нестрогого сравнения).
if (variable != null) {
// переменная не равна ни null, ни undefined
}
При использовании нестрогого сравнения (!=
), JavaScript приводит оба операнда к одному типу, и проверка вернет false
, если значение переменной — null
или undefined
.
const c = null;
console.log(c != null); // false
const d;
console.log(d != null); // false, d равно undefined
const e = 0;
console.log(e != null); // true, e установлено в 0
0
0