函数预编译

2021-05-31  本文已影响0人  江湖小盛

流程

  1. 函数被调用时,为当前函数产生AO对象
  2. 查找形参和变量声明作为AO对象的属性名,值为undifiend
  3. 使用实参的值改变形参的值
  4. 查找函数声明作为AO对象的属性名,值为function

示例

function a(test) {
  var i = 0;
  function b() {
      console.log(222)
  }
  b()
}
a(1)

结论

  1. 只要声明了局部函数,函数的优先级最高
  2. 没有声明局部函数,实参优先级最高
  3. 整体来说:局部函数 > 实参> 形参

示例

function a(b, c) {
    console.log(b) // function
    var b = 0;
    console.log(b); // 0
    function b() {
        console.log(222)
    }
}
a(1)
上一篇 下一篇

猜你喜欢

热点阅读