我是新手,正在学习JavaScript。我正在学习辅助函数的概念,无法理解为什么这段代码不产生数字值。
function numOfAdults(parents) {
parents *= 10;
return parents;
}
function numOfChildren(children) {
children = numOfAdults() * 5;
return children;
}
console.log(numOfAdults(2));
console.log(numOfChildren());
我希望numOfChildren();
的结果为100
,但得到NaN.
答案 0 :(得分:1)
实际的为什么:
function numOfAdults(parents) {
console.log(parents); // undefined
console.log(parents * 10); // NaN
}
numOfAdults();
不带参数调用该函数会导致其参数未定义。
在计算中使用 undefined 通常会产生 NaN (意思是:不是数字)。此外, NaN传播,因为在计算中使用NaN会反过来产生NaN。
因此,您可以看到意外使用了一个未定义的值,即NaN,它一直通过numOfChildren
传播到最终的console.log
。
答案 1 :(得分:0)
numOfAdults
不会传递任何值。如果您不希望它返回NaN
,则必须传递一个值。由于我不知道想要什么值,因此在以下示例中添加了虚拟值“ 5”:
function numOfAdults(parents) {
parents *= 10;
return parents;
}
function numOfChildren(children) {
number = 5; //Get the "parents" value, somehow
children = numOfAdults(number) * 5; //Pass it to numOfAdults
return children;
}
console.log(numOfAdults(2));
console.log(numOfChildren());
答案 2 :(得分:0)
问题是您没有将参数传递给numOfAdults
,因此返回值为undefined
。正确的代码应如下所示:
function numOfAdults(parents) {
parents *= 10;
return parents;
}
function numOfChildren(children) {
children = numOfAdults(children) * 5;
return children;
}
console.log(numOfAdults(2));
您可以通过检查传递的参数是否有效来改进代码:
function numOfAdults(parents) {
if (parents === undefined) {
parents = 1; //1 parent by default
}
parents *= 10;
return parents;
}
function numOfChildren(children) {
children = numOfAdults(children) * 5;
return children;
}
console.log(numOfAdults());
console.log(numOfChildren());
类似地(如果您使用的是ES6),您可以设置default parameter,如果调用代码未传递this answer of mine to your previous question >
function numOfAdults(parents = 1) { //1 parent by default
parents *= 10;
return parents;
}
function numOfChildren(children) {
children = numOfAdults(children) * 5;
return children;
}
console.log(numOfAdults());
console.log(numOfChildren());