关于前端:关于立即执行具名函数的猜想

38次阅读

共计 485 个字符,预计需要花费 2 分钟才能阅读完成。

const a = 1
(function A() {console.log(A); // [Function A]
    A = 1;
    console.log(window.A); // undefined
    console.log(A); // [Function A]
    console.log(window.a); // 1
    console.log(a); // 1
}())

如上所示,立刻执行具名函数式时不会在 window 上增加属性,且具名函数内不可对作为函数名的标识符来做批改,所以 A = 1 有效。
而失常执行的具名函数外部为何能够批改作为函数名的标识符呢,我的猜测是,定义一个函数是,将它写在了 windows 上作为一个属性。所以咱们批改的是 window 上的属性函数 A, 而不是函数 A 的标识。

function A(){console.log(A)   // [Function A]
    console.log(window.A)   // [Function A]
    A = 1
    console.log(A)    // 1
    console.log(window.A)    // 1
}
A()

因没有文档就立刻执行具名函数与具名函数做过具体解说,所以以上全是集体猜测,欢送各位大佬批评指正

正文完
 0