节点红色无法读取未定义属性'Symbol(Symbol.iterator)'

时间:2016-12-08 09:22:09

标签: javascript node-red

我在一个我不太懂的小程序上遇到这个问题(我对节点红有点新手),代码是

var profile = msg.user.profile;
var cart    = profile.cart = profile.cart || [];
var search  = profile.search;
var id      = msg.payload.substring(8);

for (let item of search){
  if ( item.id != id) continue;
  cart.push(item);
  msg.payload = item;
}

TypeError: Cannot read property 'Symbol(Symbol.iterator)' of undefined行上的完整错误为for (let item of search){。 我做了一些研究,发现这个错误通常是由于某些未定义的东西,但我真的不明白如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

我发现你正在使用 let 语法; 语法仅适用于ecmascript 2015 up(javascript版本),所以基本上你需要做的就是像这样重写你的代码

var profile = msg.user.profile;
var cart    = profile.cart = profile.cart || [];
var search  = profile.search;
var id      = msg.payload.substring(8);

// assuming that profile.search is an array
for (var i = 0 ; i < search.length ; i++){
  var item = search[i];
  if ( item.id != id) continue;
  cart.push(item);
  msg.payload = item;
}

// if it is an object, then you could loop through its props
for (var prop in search ){
   var item = search[prop];
   if ( item.id != id) continue;
   cart.push(item);
   msg.payload = item;
}