javascript函数运行顺序的问题

  • 1
    function a() {
        console.log('1')
    }
    a()
    (function () {
        console.log('2')
    })();

运行之后

clipboard.png

  • 2
    a()
    function a() {
        console.log('1')
    }
    (function () {
        console.log('2')
    })();

如果这样就不会报错,当然如果把立即执行函数删除的话就不会报错。
请教下这是什么原因

阅读 3.1k
5 个回答

加分号吧

function a() {
        console.log('1')
    }
    a();
    (function () {
        console.log('2')
    })();

分号自动插入的位置不对,应该解析成下面这样了, 加个分号 a();就可以了

   function a() {
        console.log('1')
    }
   a()(function () {
        console.log('2')
    })();

缺了分号。

规范书写

function a() {
    console.log('1')
};
a();
(function () {
    console.log('2')
})();

因为缺少分号,后面的又是括号,所以第一个识别为

 a()(function () {
        console.log('2')
    })();

所以报错了(这时期望a返回一个函数),然后以一个匿名函数为参数调用再返回一个函数,再执行。

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