consta=1(functionA(){console.log(A);//[FunctionA]A=1;console.log(window.A);//undefinedconsole.log(A);//[FunctionA]console.log(window.a);//1console.log(a);//1}())如上所示,命名函数不会立即执行给窗口添加属性,作为函数名的标识符在命名函数中是不能修改的,所以A=1是无效的。以及为什么在正常执行的命名函数内部可以修改用作函数名的标识符?我的猜测是,定义一个函数就是把它写在windows上作为一个属性。所以我们修改的是窗口上的属性函数A,而不是函数A的标识。]A=1console.log(A)//1console.log(window.A)//1}A()立即执行named函数,named函数已经详细解释了,因为没有文档,所以以上均为个人推测,欢迎大家批评指正
