weixin_44579694
xoyimi
采纳率100%
2019-07-28 12:18

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条回答

  • jslang 天际的海浪 2年前

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

    点赞 评论 复制链接分享
  • qq_40315297 qq_40315297 2年前

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

    点赞 1 评论 复制链接分享
  • hjs218 Json-Huang 2年前

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

    点赞 评论 复制链接分享
  • weixin_38636613 weixin_38636613 2年前

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

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

    点赞 评论 复制链接分享

相关推荐