大家好,我很难理解以下功能结构。
请问有人带我走过吗?我正在将其作为我的JS课程的一部分。
我已经测试了这些函数并看到了输出,但我不确定JS是如何得出这个结论的。
提前致谢。
// 1号
function doit(m){
return(m+2);
}
function ask(n){
return(n+doit(n+1)+n);
}
alert(ask(2));
// 2号
function doit(n){
return(n+1);
}
function ask(p,q){
return(p+doit(q+2)+q);
}
alert(ask(2,3));
我不知道该怎么读!
答案 0 :(得分:3)
function doit(m){
return(m+2);
}
function ask(n){
return(n+doit(n+1)+n);
}
ask(2);
ask
是一个函数,它接受一个参数并执行以下操作
+n
。doIt(n+1)
的返回值添加到其中。因此我们有n + n + doIt(n+1)
现在doIt
是另一个函数,它接受一个值并返回它,但递增两次。
这为我们提供了总共n + n + n + 1 + 2
3*(n+1)
示例二留给读者练习
答案 1 :(得分:1)
我会为你找一个。
> function doit(n){
> return(n+1);
> }
> function ask(p,q){
> return(p+doit(q+2)+q);
> }
> alert(ask(2,3));
首先处理两个函数声明,然后执行代码。 alert 显示与括号之间传递给它的表达式结果的对话框。 括号中的位调用 ask 函数并将其传递给两个值:数字2和3。
ask 函数按顺序分配参数:p被赋值为2,q被赋值为3.
该行:
return(p+doit(q+2)+q);
可以更清楚地写成如下(外括号是多余的,一些空格使其更容易阅读):
return p + doit(q + 2) + q;
它将关键字返回之后的表达式返回给调用者( alert ),这是p的值加上doit(q + 2)
的值。 q的价值。
函数 doit 传递值q + 2
,其中(因为q被赋值为3)为5。
传递给 doit 的第一个值被赋值给变量n,并返回值n + 1
(在这种情况下为6)。
现在询问中的return语句是2 + 6 + 3
,即11。
最后,11返回 alert 并显示在屏幕上。