关于js打断点的机制是怎么样的?

function f() { return console.log('I am outside!'); }
(function () {
  if(false) {
    // 重复声明一次函数f
    function f() { return console.log('I am inside!'); }
  }

  f();
}());

这段js程序,在chrome下,我如果将断点打在第一行,会显示:
I am inside!
I am outside!

如果直接运行,只会打印一个
I am outside!

这是一种什么机制会导致这样的情况呢?求大神帮解惑…………

阅读 3.3k
1 个回答

function f() { return console.log('I am outside!'); }
(); 这个是js自执行函数,定义完立即执行。你把断点打在第一行,但是括号里的函数本来就执行在第一行之前。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题