开发者问题收集

JSON-未捕获的类型错误:无法读取未定义的属性

2014-08-02
6608

我想获取一些 JSON 值并从中创建变量,但当我这样做时,我收到错误。 在第一阶段,JSON 数组是空的,这就是我使用 if != null 的原因,但即使数组已填充,我也会收到错误。

var tempJS=[];  
$("#sth td").each(function(){
    $this = $(this);
    tempJS.push({"COLOR":$this.attr("data-color"),});
});
console.log(JSON.stringify(tempJS));

if(tempJS!=null) var kolor=tempJS[c-1].COLOR;

为什么最后一行给我以下错误:

Uncaught TypeError: Cannot read property 'COLOR' of undefined

2个回答

如果您在控制台上尝试:

[]==null
> false

您将看到返回 false 。这意味着如果您检查数组是否等于 null ,您将始终得到 false,并且始终在 if 语句中运行代码。

您应该改为这样做:

if(tempJS.length) var kolor=tempJS[c-1].COLOR;

您不需要 if(tempJS.length > 0) ,因为每个数字都被视为 true ,除了 0 表示 false

Marco Bonelli
2014-08-02

零长度数组与 null 不同。尝试测试 if (tempJS.length > 0) ...

anon
2014-08-02