关于 函数内的变量提升
来源:16-11 作用域和闭包--解题-代码演示
Harry4079265
2019-02-03
function foo(a) {
var a;
return a;
}
function bar(a) {
var a = 'bye';
return a;
}
[foo('hello'), bar('hello')]//输出结果为:hello,bye
两个函数内部的 return a; 根据作用域链寻找都是返回函数作用域的 a 吧。
第二个输出我可以理解,可是第一个的输出结果是 hello ,
第一个函数的a 不是undefined 吗?
写回答
2回答
-
熬夜对身体不好所以要通宵
2019-05-07
会不会是形参的优先级的问题
00 -
双越
2019-02-03
看代码理解,应该如你所说:第一个函数输出 undedinfed ,但是实测输出 hello 。(而且,我还怀疑不同的执行环境,输出结果不一样,尚未验证)
对应这个问题,其细节我也需要再详细查查,这涉及到 js 引擎的内部处理机制了。
—— 不过,这种情况在日常开发中基本不会出现,而且也强烈不建议写这样变量重复定义的代码。因此,在实际应用层面无需就纠结干问题。
00
相似问题