预编译 - js函数高级

时间:2021-07-29 22:06:39   收藏:0   阅读:20

JS运行机制

预编译

预编译前奏

var a = b = 123 //在局部作用域中声明

此时b为全局变量

预编译开始

function fn(a) {
  console.log(a)

  var a = 123
  console.log(a)

  function a() {}
  console.log(a)

  var b = function() {}
  console.log(b)

  function d() {}
}
fn(1)
  1. 创建AO对象(Activation Object)[执行期上下文]

AO {}

  1. 处理AO对象,设置AO的key
AO {
  a: undefined,
  b: undefined
}
  1. 参数统一
AO {
  a: 1,
  b: undefined
}
  1. 函数声明处理
AO {
  a: function a() {},
  b: undefined,
  d: function d() {},
}

预编译发生在函数执行前一刻

  1. 执行函数
打印输出:

function a() {}

123

123

function () {}

Go (Global Object) 就是window,同时GO的预编译和AO一样

原文:https://www.cnblogs.com/lonelyman/p/15076679.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!