《JavaScript学习捷径》双参数函数调用练习题答案逻辑解惑
搞懂这个函数调用逻辑其实很简单,我一步步给你拆解
首先咱们把题目要求拆成核心要点,对应到代码里就清晰多了:
1. 先明确两个函数的角色
题目里涉及两个函数,书中答案里的m应该是咱们最终要调用的「主函数」,另一个是用来传参的「辅助函数」:
// 辅助函数:接收数字参数,返回处理后的值(逻辑举个例子,具体看书中上下文) function helper(num) { return num * 2; // 比如把输入的数翻倍 } // 主函数:接收两个参数,第一个是变量,第二个是辅助函数的返回值,最终返回计算结果 function m(variable, helperResult) { return variable * helperResult; // 比如把变量和辅助结果相乘 }
2. 拆解题目要求的调用与赋值
题目要的就是这行核心代码(书中答案的m...就是这个逻辑):
var est = m(myVar, helper(10));
咱们一步步捋执行顺序:
- 先执行
helper(10):这是一个完整的函数调用,把10传给helper,函数内部计算后返回20(按上面的示例逻辑) - 接着,把提前定义好的变量
myVar(比如let myVar = 5;)和刚才得到的20,一起作为参数传给主函数m - 主函数
m执行内部逻辑,5 * 20 = 100,返回这个结果 - 最后把返回值赋值给
est——题目说“未提前声明的est”,书中用var是更规范的写法(避免直接赋值创建全局变量,相当于在赋值时同时完成声明)
3. 最容易懵的关键点:函数调用作为参数的本质
这里要区分开「传函数本身」和「传函数调用的返回值」:
- 如果写
helper是把函数本身传进去,而题目要求的是helper(10)——也就是先执行这个调用拿到结果,再把结果作为参数传给主函数,这是完全不同的逻辑。
举个能直接运行的完整例子:
let myVar = 5; function helper(num) { return num * 2; } function m(variable, helperResult) { return variable * helperResult; } var est = m(myVar, helper(10)); console.log(est); // 输出100
运行一下就能直观看到每一步的结果啦。
内容的提问来源于stack exchange,提问作者Llama
相关产品推荐
相关产品推荐

