Различия между! = И! == с нулевым и недоопределенным - PullRequest
0 голосов
/ 07 января 2020

У меня есть javascript, который использует селектор запросов

let testobj;
testobj = document.querySelector('#someobject');

Если я напишу следующую строку, как показано ниже, она не введет if

if (testobj !== null && testobj !== 'undefined')

Если она написана как показано ниже

if (testobj != null && testobj != 'undefined')

Ответы [ 2 ]

2 голосов
/ 07 января 2020

Вы путаете два соглашения для сравнения с неопределенным:

 x === undefined

и

 typeof x === 'undefined'

Раньше вас считали плохим стилем, потому что undefined была просто переменной, которая при использовании до инициализации имелось значение undefined, которое, однако, можно было изменить на что угодно, включая null или даже 3. С современными JS это намного меньше беспокойства - undefined теперь недоступен для записи, что означает, что вам действительно нужно беспокоиться о значении undefined внутри каждого любимого JavaScript bugbear, with блоков.

Для обратной совместимости иногда предпочтительнее typeof x === 'undefined', но в современной практике x === undefined хорошо. Тем не менее, если вы сравниваете x с null и undefined, x != null является более понятным и кратким IMO, хотя некоторые люди рекомендуют никогда не использовать == и != в JavaScript.

1 голос
/ 07 января 2020

При использовании! == для неопределенного значения не следует заключать его в кавычки. Таким образом, код должен выглядеть следующим образом:

if(testobj !== undefined)

Или вы можете использовать typeof для сравнения цитируемого «неопределенного», например:

if(typeof testobj !== 'undefined')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...