回调函数

异步回调

语义通过浏览器提供的接口,最终由浏览器线程,通过事件信号来回调该函数。

异步接口函数的作用域

  1. //异步接口函数的作用域链和普通函数的嵌套调用的机制是一样的,只不过是执行的时间不同。
  2. //编译器在编译异步回调函数的作用域时,不会对在异步接口函数做特殊处理。
  3. //在函数定义时,函数的作用域就已经确定。
  4. //在异步回调函数执行时,它的执行上下文(作用域链)不会变化。下面代码最内层的函数会产生两个闭包。
  5. function foo() {
  6. var a = 100;
  7. const t = setTimeout(() => {
  8. var b = 100;
  9. setTimeout(() => {
  10. console.log(a)
  11. console.log(b)
  12. },1000)
  13. }, 1000);
  14. }

同步回调

语义在JS自己的线程中,发生的回调函数。

异步回调 VS 同步回调

  • 改变代码的执行时间,在未来由事件来触发执行。 ```javascript //JS 异步回调 var foo = function () { setTimeout(bar, 0);
    console.log(2); }

var bar = () => { console.log(1); }

foo(); // 2 1

//JS 同步回调 var foo = function () { bar(); console.log(2); }

var bar = () => { console.log(1); } foo(); // 1 2

```