Javascript i';在最后一个函数中,除了一个数字之外,我还得到了NaN
functin CalAverage返回NaN beisde的平均数。 我对它进行了编码,这样它将循环tips数组,并将tips和sum添加到sum变量中。Javascript i';在最后一个函数中,除了一个数字之外,我还得到了NaN,javascript,arrays,function,object,nan,Javascript,Arrays,Function,Object,Nan,functin CalAverage返回NaN beisde的平均数。 我对它进行了编码,这样它将循环tips数组,并将tips和sum添加到sum变量中。 有人能解释一下问题吗?在调用calcTips之前,您正在调用calaverage,因此数组是空的平均值以返回和/提示结束。长度。由于sum是0和tips.length是0,这就是NaN(在JavaScript中,0/0是NaN,因为JavaScript使用IEEE 754双精度浮点,它指定了该行为) 要解决此问题,请执行以下操作: 当提示时
有人能解释一下问题吗?在调用
calcTips
之前,您正在调用calaverage
,因此数组是空的<代码>平均值以返回和/提示结束。长度。由于sum
是0
和tips.length
是0
,这就是NaN
(在JavaScript中,0/0
是NaN
,因为JavaScript使用IEEE 754双精度浮点,它指定了该行为)
要解决此问题,请执行以下操作:
提示时,不要对和进行除法。长度为0
,并且
在调用
calcTips
之前,您正在调用calaverage
,因此数组为空<代码>平均值以返回和/提示结束。长度。由于sum
是0
和tips.length
是0
,这就是NaN
(在JavaScript中,0/0
是NaN
,因为JavaScript使用IEEE 754双精度浮点,它指定了该行为)
要解决此问题,请执行以下操作:
提示时,不要对和进行除法。长度为0
,并且
就我所见,平均小费是在小费实际存在之前计算出来的。如果移动上面提示的计算,它应该可以正常工作:
mark.Average = calcAverage(mark.tips);
john.Average = calcAverage(john.tips);
mark.calcTips();
john.calcTips();
console.log(john);
console.log(mark);
就我所见,平均小费是在小费实际存在之前计算出来的。如果移动上面提示的计算,它应该可以正常工作:
mark.Average = calcAverage(mark.tips);
john.Average = calcAverage(john.tips);
mark.calcTips();
john.calcTips();
console.log(john);
console.log(mark);
尝试调用这些函数
mark.calcTips();约翰·卡尔蒂斯()代码>
以前
mark.calcTips();
john.calcTips();
mark.Average = calcAverage(mark.tips);
john.Average = calcAverage(john.tips);
console.log(john);
console.log(mark);
因为调用calAverage()函数时提示是空数组
代码应该是
mark.Average = calcAverage(mark.tips);
john.Average = calcAverage(john.tips);
尝试调用这些函数
mark.calcTips();约翰·卡尔蒂斯()代码>
以前
mark.calcTips();
john.calcTips();
mark.Average = calcAverage(mark.tips);
john.Average = calcAverage(john.tips);
console.log(john);
console.log(mark);
因为调用calAverage()函数时提示是空数组
代码应该是
mark.Average = calcAverage(mark.tips);
john.Average = calcAverage(john.tips);
问题围绕着调用该函数时的“”绑定。您可以看到,calcTips
是使用调用的,但是我提取该函数只是为了演示;这段代码仍然可以改进,但没有做太多更改,所以您可以看到发生了什么
检查代码段:
var john={
姓名:“约翰·史密斯”,
法案:[124、48、268、180、42],
提示:[],
最终:[]
};
变量标记={
姓名:“马克·史密斯”,
法案:[77、375、110、45],
提示:[],
最终:[]
};
函数calcTips(){
for(设i=0;i=100&&this.bills[i]调用该函数时,问题围绕“”绑定。您可以看到,calcTips
已被使用调用,但我仅提取该函数用于演示目的;该代码仍然可以改进,但没有做太多更改,因此您可以看到发生了什么
检查代码段:
var john={
姓名:“约翰·史密斯”,
法案:[124、48、268、180、42],
提示:[],
最终:[]
};
变量标记={
姓名:“马克·史密斯”,
法案:[77、375、110、45],
提示:[],
最终:[]
};
函数calcTips(){
for(设i=0;i }否则,如果(this.bills[i]>=100和&this.bills[i]当tips.length==0
时,您将得到0/0
,这确实是NaN
。当tips.length==0
时,您将得到0/code>这确实是NaN
。您的上一条语句是错误的。请尝试console.log(1.0/0);
。顺便说一句,这在C/C++中也是错误的,可能在浮点格式支持+inf
和-inf
的其他语言中也是错误的。非常感谢。真不敢相信我犯了这样的错误:PEven1/0
不会返回NaN
(尽管在类型化语言中不会是这种情况)。console.log(typeof(50/0));//->数字
无穷大是一个number@goodvibration-谢谢!修复了它。这就是我快速发帖并准备去吃饭的结果。它是0/
0`(OP正在做的事情)这将导致NaN
x/0
,其中x
不是NaN
或0
导致无限
或-无限
。请注意,这与JavaScript的松散类型无关;NaN
,无限
等都是数字
type(IEEE-754双精度浮点)。这都符合IEEE 754-2019规范。您的上一个声明是错误的。请尝试console.log(1.0/0);
。顺便说一句,这在C/C++中也是错误的,可能在浮点格式支持+inf
和-inf
的其他语言中也是错误的。非常感谢。真不敢相信我犯了这样的错误:PEven1/0
不会返回NaN
(尽管在类型化语言中不会是这种情况)。console.log(typeof(50/0));//->数字
无穷大是一个number@goodvibration-谢谢!修复了它。这就是我快速发帖并准备去吃饭的结果。它是0/
0`(OP正在做的事情)这将导致NaN
x/0
,其中x
不是NaN
或0
导致无限
或-无限
。请注意,这与JavaScript的松散类型无关;NaN
,无限
等都是数字
type(IEEE-754双预
mark.calcTips();
john.calcTips();
mark.Average = calcAverage(mark.tips);
john.Average = calcAverage(john.tips);