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

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()

因没有文档就立即执行具名函数与具名函数做过具体讲解,所以以上全是个人猜想,欢迎各位大佬批评指正

你可能感兴趣的:(前端javascript)