xoyimi
2019-07-28 12:18
采纳率: 100%
浏览 475

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条回答 默认 最新

  • 天际的海浪 2019-07-28 15:19
    已采纳

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

    已采纳该答案
    打赏 评论
  • Json-Huang 2019-07-28 12:41

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

    打赏 评论
  • weixin_38636613 2019-08-24 11:03

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

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

    打赏 评论
  • qq_40315297 2019-09-17 01:12

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

    打赏 评论

相关推荐 更多相似问题