Ответ 1
Если вы можете обернуть свою голову вокруг этого, токен undefined
на самом деле 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
станет false, потому что undefined != 'uh oh'
. obj.BKEY == undefined
по-прежнему возвращает false, но только потому, что нам повезло. Если бы я установил obj.BKEY='uh oh'
, то obj.BKEY == undefined
был бы true, хотя он действительно существует!
Вероятно, вы хотите, чтобы набор эксклюзий AKEY
был null
. (Кстати, null
ключевое слово; null='uh oh'
выдает исключение).
Вы также можете просто опустить AKEY
из своего JSON, и в этом случае вы найдете:
typeof(example.AKEY) == 'undefined'
(Если вы установили AKEY
в null
, тогда typeof(example.AKEY) == 'object'
.)
Единственное реальное различие между установкой на нуль и отсутствием заключается в том, хотите ли вы, чтобы ключ появлялся в цикле foreach.