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

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