【问题标题】:Cannot read property 'length' of undefined in backbone无法读取主干中未定义的属性“长度”
【发布时间】:2018-11-13 19:09:06
【问题描述】:

我在检查长度时遇到未定义的错误。请看图

this. updateConfiguration = _.debounce(this.updateConfiguration, 300); 
 this.set({ url: (HyprLiveContext.locals.siteContext.siteSubdirectory 11 ") + (slug ? "/" + slug : "") + "/p/" + this.get("productCode)} 
 this.lastConfiguration = []; 
 this.calculateHasPriceRange(conf); conf = undefined 
 this.on('sync', this.calculateHasPriceRange); 
 var variations = this.get('variations'); variations = undefined 
 var sum = 0; sum = 0 

 !.. 0) 
  { 
  var stockArray = []; 

  for(var 1=0; i<variations.length; i++) 
  { 

可能是什么原因?

【问题讨论】:

  • 在此处发布带有 HTML 上下文的完整代码。
  • 我们不想查看图像的代码。请将代码部分发布到您的帖子中。不看一些变量是未定义的,所以你需要弄清楚为什么它没有被设置。
  • 欢迎来到 stackoverflow.com。请花一些时间阅读帮助页面,尤其是名为“我可以在这里询问哪些主题?”的部分。和“我应该避免问什么类型的问题?”。也请参观并阅读有关如何提出好问题的信息。最后请学习如何创建一个最小、完整和可验证的示例
  • 您好,请花点时间查看How to ask a good question。如果您在此处提供代码示例而不是图像,它将对人们有所帮助。
  • Do not post images of code or errors! 图片和屏幕截图可以很好地添加到帖子中,但请确保帖子在没有它们的情况下仍然清晰有用。如果您发布代码或错误消息的图像,请确保您还复制并粘贴或直接在帖子中输入实际代码/消息。

标签: javascript jquery arrays backbone.js


【解决方案1】:

尝试初始化数组,并检查一个真值:

var variations = [];

if (this.get('variations')) {
    variations = this.get('variations');
}

【讨论】:

  • 这在 JavaScript 中毫无意义。无论this.get('variations') 返回什么都将覆盖您之前所做的。
  • 没有未定义的长度,如果你初始化它是一个长度为0的空数组?如果这不适合 JavaScript,也许可以在初始化中使用条件。
  • 但是当this.get返回未定义时,它仍然是未定义的......当它被替换为get调用返回时,它不会神奇地知道它曾经是一个数组。不知道.get() 是什么,几乎不可能回答这个问题。
  • 更改为检查真实值,对否决票有点苛刻,只是想提供帮助。
猜你喜欢
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-10
  • 2013-09-06
  • 2020-09-14
  • 2018-01-11
  • 2020-12-23
相关资源
最近更新 更多