老师,这里有两个个疑问

老师,这里有两个个疑问

var a = 1;
function fn(a){
   console.log(a);
   a = 2;
}
fn(a);
console.log(a);

-----------------------------------------------------------------------

老是,这里有个疑问

1、调用函数  fn(a);  这里面的实参a它也可以引用  var a = 1; 里面的变量a嘛?为什么?不是太明白

2、函数内部  a = 2; 是不是受  fn(a);形参a的影响,假如形参为  fn(b),那么里面的a = 2;是不是还是一个全局变量

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕粉 2020-08-13 09:26:48

‘沉木岩’同学你好,老师在第一次回答的时候已经说了哦,函数里面的a=2不是全局变量,它是给函数的形参进行赋值,并不是给全局的a进行赋值:

http://img1.sycdn.imooc.com//climg/5f3495ee09c80d5304510230.jpg

YoLo_H 2020-08-13 03:04:31

遇事不决,先预解析1----window的 var 变量 

2---要是window作用域中 var的变量名跟window作用域(同一个作用域)下的函数名相同,第一步解析的var 作废,保留函数全部,如果有多个函数就只保留最后一个函数全部本身

3.解析完window的作用域就该到其他作用域与解析了,跟上述一样,不过这里重点多出来一个。形参就是一个局部作用域里面得一个var 变量也需要与解析

4.最后逐行代码执行

好帮手慕粉 2020-07-24 17:35:29

同学你好,关于同学的问题回答如下:

1、可以的,调用函数  fn(a),是将全局的a变量作为实参传递给了fn函数:

http://img1.sycdn.imooc.com//climg/5f1aaa38092b0cdf04270232.jpg

2、由于函数的形参名不是规定的,所以老师换个写法,便于同学理解:

http://img1.sycdn.imooc.com//climg/5f1aaadf090a186404680248.jpg

所以函数的这个内部b=2,是给函数的形参b赋了值,并不影响全局的a变量。

如果我的回答帮助了你,欢迎采纳。祝学习愉快~

  • 提问者 沉木岩 #1
    函数内部a = 2也是全局变量,为什么最终不会改变a的值呢,函数内部打印的a值为传递进来的var a = 1,但是下面 a 改变了值为2,外部打印的a 应该为2才对,老师怎么理解呢
    2020-08-13 05:44:58
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师