为什么我得到Uncaught TypeError:在分配时无法读取未定义的属性'0'?

时间:2017-02-03 17:45:29

标签: javascript

我有:

var lineItemTracker = new Array();
lineItemsTracker[i]['sales_order_line_item_id'] = result[i].sales_order_line_item_id;

这会引发错误

Uncaught TypeError: Cannot read property '0' of undefined on assign

如果我检查

console.log(result[i].sales_order_line_item_id);

然后我得到了正确的结果。当我检查

console.log('here ' + lineItemsTracker[i]['sales_order_line_item_id']);

我收到错误消息。

lineItemsTracker[1]['sales_order_line_item_id'] = 'test';

产生错误。有解决方法吗?

2 个答案:

答案 0 :(得分:4)

编辑:正如其他人所说,你有一个拼写错误,但即使在纠正错字后,它也无法使用您编写的代码。

您正在尝试访问无效索引,因此您收到错误。使用Array的push方法添加元素。

var lineItemTracker = new Array();
lineItemsTracker.push(result[i].sales_order_line_item_id);

<强>阐释:

1。创建像var lineItemTracker = new Array();这样的数组时 lineItemTracker创建了一个数组,但长度为0

2。接下来,当您编写lineItemsTracker[i]时,表示您正在尝试访问索引i处的元素。因为,数组的长度为零,它将返回undefined,因为在该索引处没有定义元素。

3。接下来,lineItemsTracker[i]['sales_order_line_item_id']此行尝试访问sales_order_line_item_id对象上的属性undefined,然后您将收到错误。

  

未捕获的TypeError:无法在分配时读取未定义的属性'sales_order_line_item_id'

答案 1 :(得分:3)

你有一个错字。它应该是var lineItemsTracker = new Array();

你的定义中没有s,但你在任何地方都引用了它