萌新求教!问一下,为什么这两个函数的控制台首次输出结果不同。感激不尽

函数1:
varfoo=1;
functionfnz(){
console.log(foo);//undefined
foo=3;
varfoo=2;
console.log(foo);//2
};fnz();
console.log(foo);//1
函数2:
varfoo=1;
(function(foo){
console.log(foo);//1
foo=3;
varfoo=2;
console.log(foo);//2
})(foo);
console.log(foo);//1
慕田峪9158850
浏览 308回答 2
2回答

一只名叫tom的猫

第一个函数因为变量提升在函数作用域内首先执行的是varfoo;这个时候foo是没有值的;第二个函数(function(foo){}))(foo)这种写法是把foo当作函数参数的。所以有值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript