var temp = 1;
(function temp (){
temp = 2;
console.log(temp);
})();
问:代码执行的结果是什么?
ƒ temp (){
temp = 2;
console.log(temp);
}
解析:
在作用域空间中寻找变量,此时,需要在立即执行函数中去输出temp,而非匿名执行函数,函数名也为temp,在同一个作用域空间中时,当变量声明与函数声明,函数声明优先变量声明,而且函数变量是只读的,不能进行赋值。在使用严格模式下,会抛出错误。
如果将非匿名立即执行函数名改为合法的且不与temp相同,比如:
var temp = 1;
(function a (){
temp = 2;
console.log(temp);
})();