求教!

废鸡程序员 2020-09-01 08:29:04


为什么这两段代码最后一个console.log打印出的结果不一样?
...全文
10359 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr_aning 2020-09-08
  • 打赏
  • 举报
回复
而且第一个fn1应该会被下面的fn1覆盖,真正执行会打印1,2,2,1,2,2,
Mr_aning 2020-09-08
  • 打赏
  • 举报
回复
简单来说就是第一个在局部申明了变量(形参就是申明的变量),修改和打印的都是局部变量.而第二段代码没有在局部申明变量,所以就去找全局的变量
My f 2020-09-02
  • 打赏
  • 举报
回复
楼上说的没错。总的来说就是: 函数内部操作变量,首先要判断有没有同名的局部变量,有则操作的为局部变量,反之则为全局变量。
天际的海浪 2020-09-01
  • 打赏
  • 举报
回复
function fn1(a) 中的参数a就等于是fn1函数内的局部变量a。 你调用fn1()时没有给参数a传值,a的值就是默认值undefined。 在fn1函数内访问a,访问的是函数内的局部变量a。 在fn1函数内对a重新赋值,改变的也是函数内的局部变量a。函数外的全局变量a不受影响。 如果function fn1() 没有设置参数a,函数内就没有局部变量a, 在fn1函数内访问a,访问的是函数外的全局变量a。 在fn1函数内对a重新赋值,改变的也是函数外的全局变量a。

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧