JS函数调用之后 函数中的隐式全局变量为何不会覆盖外面的显式全局变量?

初学者,求指出错误,
这是我的理解:
当调用函数f1时,隐式全局变量num = 2会把头部声明的 var num =1 覆盖掉,
所以底部的console.log(num); 结果应该是 2 ,才对呀.
百思不得其解,求大神指点迷津,晚辈不胜感激!!!

 var num = 1;
function f1(num) {
  num = 2;
  console.log(num);//2
}
f1(num);
console.log(num);//1

4个回答

function f1(num) { 函数声明时定义的num形式参数就等同于是隐式声明的局部变量,所以在函数内使用的num都是局部变量。

局部变量作用域只能作用于局部,不会改变函数体外变量值。可以看下https://blog.csdn.net/qq_42564846/article/details/81213564

1.隐式全局变量不会提升作用域

2.隐式全局变量不会覆盖var定义的全局变量

你学的什么啊 形参num 等同于 var num 声明了一个变量 函数内部就是 var num ;num=1(实参传入); num=2; 此时 函数中的num 不是全局变量而是一个局部变量了 函数内部等同于 var num=2; 所以函数内部是一个局部变量num 函数外部全局环境中当然打印出来的就是全局变量的值;局部变量打印的就是局部变量的值

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问