Javascript 正在尝试创建提示计算器

Javascript 正在尝试创建提示计算器,javascript,Javascript,我正在尝试创建一个使用方法和循环的tip计算器。在循环中,我有一个if语句来整理小费的数量。如果我尝试将数据添加到对象内的空数组中,程序将停止 我试过使用推送,但仍然不起作用。另一方面,如果我创建了一个变量,并将数据存储在那里,然后添加结束添加,那么它就可以工作了。我只是想了解为什么另一种方式不起作用 例如,如果我有一个代码 let john = { bills: [124, 48, 268, 180, 42], tipCalc: function (){ this.tip =

我正在尝试创建一个使用方法和循环的tip计算器。在循环中,我有一个if语句来整理小费的数量。如果我尝试将数据添加到对象内的空数组中,程序将停止

我试过使用推送,但仍然不起作用。另一方面,如果我创建了一个变量,并将数据存储在那里,然后添加结束添加,那么它就可以工作了。我只是想了解为什么另一种方式不起作用

例如,如果我有一个代码

let john = {
  bills: [124, 48, 268, 180,  42],
  tipCalc: function (){
    this.tip = [];
    this.total = [];
    for (let i = 0 ; i < this.bills.length; i++) {
      let bills = this.bills[i]; 
      if (bills < 50)  {
         this.tip[i] = (.2 * bills);
         this.total[i] = (this.tip[i] + bills);
      }
    }
}
让john={
法案:[124、48、268、180、42],
tipCalc:函数(){
this.tip=[];
这个.总数=[];
for(设i=0;i
如果我尝试那样的方法,为什么不起作用

有人能解释吗/

没有实际的结果。如果我这样做,它会起作用

for (let i =0; i <this.bills.length; i++) {
  let bills = this.bills[i];
  let percentage;
  if (bills < 50) {
     percentage = .2 
  }
  this.tip[i] = percentage * bills; 
}

我想这就是你想要的 您调用了
this.tip=[]和this.total=[];
this-inside
tipCalc
函数,但我看不出您曾经声明过它。 第二个u没有调用ur
tipCalc
函数

我用下面的方法解决它

让john={
法案:[124、48、268、180、42],
总数:[],
提示:[],
tipCalc:函数(){
for(设i=0;iconsole.log(john.total)
而不是缺少一个
}
在第一个代码段的末尾。有什么问题吗?只是将代码复制到我的控制台,它工作得很好。所以我想看看是否有人能帮助我理解为什么第一个代码不工作?当我尝试使用它时,它不会返回任何值。@Josel,这是因为没有
return
语句。添加
返回这个。总计
,或者类似的东西,谢谢你的回复``let john={bills:[124,48,268,180,42],tipCalc:function(){this.tip=[];this.total=[];for(let i=0;i让john={bills:[124,48,268,180,42],tipCalc:function(){this.tip=[];this.total=[];for(let i=0;i=50&&bills我试图解决的是上面的欢迎评论中的代码。我试图理解为什么它不起作用。它对你起作用了吗?我想你没有读我的ans。正如我在那里说的,你称之为
this.tip=[];this.total=[]
这是什么意思。它的意思是你以前声明
tip&total
变量,但从未声明过它。第二次你写
this.tip[i]和this.total[i]
但是
tip&total
中没有元素,所以你不能调用任何元素。现在你调用
john.tipCalc()
但是在函数内部,u没有返回任何东西,因此没有返回函数所能做的任何事情,希望您理解。我想这是我的疑问,现在我理解了,因为我在它没有运行的同一个函数中声明了所有内容。我必须在之前声明它。