JavaScript 函数嵌套问题

qq446512500 qq446512500 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
代码如下:

function foo () {
function bar () {
}

return bar;
}

var a = foo();
var b = foo();
alert(a === b); // 结果为 false


一开始,我以为函数都是预编译的,在代码执行之前就已经准备好的,
所以,推测 foo, bar 两个函数在一开始就存在,以上代码中的 foo, bar 始终都没变过。

经过运行测试,发现如果 foo 不执行, bar 函数是不存在的,
结论是:预编译的时候,只有全局函数 foo 被定义,而 foo 函数体内的函数 bar 还没有定义,
当 foo 函数被执行时, 先定义 bar 函数,再执行 foo 函数代码。
当 foo 第二次执行时, bar 还会被定义一遍,所以 foo 执行多少次, bar 就被定义多少次。

不知道我以上的结论对不对?

还有一点,我担心这样会不会影响效率,如果 bar 函数的内容不依赖 foo 的环境,把 bar 写成全局函数会不会快一些?
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
qq446512500
JavaScript 87,984 成员 224,681 内容