关于doWork函数参数计算及变量y是否未定义的技术咨询
让我一步步帮你拆解这两个问题:
1. var func = doWork(?) 中的问号部分该怎么处理?
先看doWork函数的定义:function doWork() { ... } —— 它没有声明任何形参,也就是说调用它的时候根本不需要传递任何参数。
原代码里var func = doWork()就是正确的写法,这里的问号位置不需要填任何值。哪怕你硬传一个值进去(比如doWork(123)),doWork函数内部也不会用到这个参数,它依然会返回内部的calculate函数,对后续func(5)的执行没有任何影响。
简单说:问号部分啥都不用填,直接写doWork()就对了。
2. 代码第2行的变量y是否未定义?
完全不是!这里的y是内部函数calculate的形参,当你调用func(5)的时候,这个5就会被自动赋值给y——相当于在calculate函数执行时,y已经被声明并赋予了明确的值。
你可以把function calculate(y) { return y + 1; }理解成等价于:
function calculate() { const y = arguments[0]; // 这里的arguments[0]就是调用时传入的5 return y + 1; }
所以在函数执行过程中,y是有合法值的,不存在未定义的问题。
内容的提问来源于stack exchange,提问作者IZZLIEDAT
相关产品推荐
相关产品推荐

