Вы путаете два соглашения для сравнения с неопределенным:
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.