【问题标题】:Uncaught TypeError: in JS [duplicate]未捕获的类型错误:在 JS [重复]
【发布时间】:2020-12-11 11:30:01
【问题描述】:

我得到:

“未捕获的类型错误:无法读取未定义的属性'0' 在 newTipCalc.js:4"

谁能告诉我哪里错了:

var johnTipCal = {
    name: 'John Smith',
    bills: [124,48,268,180,42],
    bill : this.bills[0]    

};

console.log(johnTipCal.bill);

【问题讨论】:

  • this.bills 未定义
  • @TSR 我已经在上面一行定义了账单
  • 检查我的答案
  • @Harmandeep,有点是的,但应该如何分配它
  • 初始化时不能访问对象自身内的对象属性

标签: javascript


【解决方案1】:

当您定义变量时,它不在范围内,如果您想访问该bills,那么您必须先初始化变量,然后重新分配值,如下所示:

let johnTipCal = {
  bills: [124,48,268,180,42],
}
johnTipCal = {
    ...johnTipCal,
    name: 'John Smith',
    bill : johnTipCal.bills[0]    

};

console.log(johnTipCal.bill);

【讨论】:

    【解决方案2】:

    this.bills 未定义。 您需要检查它是否设置为至少一个空数组

    var bills = [124,48,268,180,42]; var johnTipCal = { 名称:“约翰·史密斯”, 账单, 账单:账单[0]
    };

    【讨论】:

      【解决方案3】:

      您正在尝试访问尚未定义的属性。所以你可以做的是,创建没有 bill 属性的对象。 稍后创建它后,您可以向其添加 bill 属性。

      var johnTipCal = {
          name: 'John Smith',
          bills: [124,48,268,180,42]
      };
      
      johnTipCal.bill = johnTipCal.bills[0] 
      console.log(johnTipCal);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-23
        • 1970-01-01
        • 2017-10-15
        • 2021-07-08
        • 2019-01-29
        • 2015-08-18
        • 2017-07-03
        • 1970-01-01
        相关资源
        最近更新 更多