Если вы можете обдумать это, токен undefined
фактически не определен.
Позвольте мне уточнить: даже если в JavaScript есть специальное примитивное значение, называемое undefined, undefined
является , а не ключевым словом JavaScript, и не имеет никакого особого значения.Вы можете нарушить код, который проверяет наличие объекта, сравнивая его с undefined
, определяя его.
var obj = { BKEY: 'I exist!' };
if (obj.AKEY == undefined) console.log ('no AKEY');
if (obj.BKEY == undefined) console.log ('should not happen');
undefined='uh oh';
if (obj.AKEY == undefined) console.log ('oops!'); // Logically, we want this to execute, but it will not!
if (obj.BKEY == undefined) console.log ('should not happen');
Единственным выходом консоли будет 'no AKEY'.После того, как мы присвоили глобальной переменной undefined
, obj.AKEY == undefined
становится ложным, потому что <i>undefined</i> != 'uh oh'
.obj.BKEY == undefined
все еще возвращает ложь, но только потому, что нам повезло.Если бы я установил obj.BKEY='uh oh'
, то obj.BKEY == undefined
был бы true , , даже если он действительно существует !
Вы, вероятно, хотите, чтобы для Explicity установитьnull
.(Кстати, null
- это ключевое слово; null='uh oh'
выдает исключение).
Вы также можете просто пропустить AKEY
из своего JSON, в этом случае вы найдете:
typeof(example.AKEY) == 'undefined'
(Если вы установите AKEY
на null
, то typeof(example.AKEY) == 'object'
.)
Единственная реальная разница между установкой на ноль и пропуском заключается в том, хотите ли вы клавишупоявляться в цикле foreach.