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
阅读 1.9k
2 个回答

funciont 里面那个不是全局变量,是函数参数。

函数参数跟全局的 num 是两个不同的变量,改变函数参数不会改变全局变量。

新手上路,请多包涵

时光冉冉,今天回看当时这个问题,可以从两点进行分析:

  1. 当时正好在学隐式变量,隐式变量会变成全局变量的概念先入为主,忽略了函数的形参;
  2. JS 函数参数传递模式时按值传递。函数外的 num 和内部的 num 不是同一个值;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题