如果您可以解决这个问题,那么 令牌
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将是 真的 , 即使它确实存在 !
您可能需要显式设置
AKEY为
null。(顺便说一句,
null是 一个关键字;
null='uh oh'引发异常)。
您也可以简单地
AKEY从JSON中省略,在这种情况下,您会发现:
typeof(example.AKEY) == 'undefined'
(如果设置
AKEY为
null,则为
typeof(example.AKEY) == 'object'。)
设置为null和忽略之间的唯一真正区别是您是否希望密钥出现在foreach循环中。



