a不是改成【4,44】了么 b和a的指向一样啊 为什么b打印出来还是原来的4

a不是改成【4,44】了么 b和a的指向一样啊 为什么b打印出来还是原来的4

a不是改成【4,44】了么  b和a的指向一样啊  为什么b打印出来还是原来的4

正在回答

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

2回答

ES5没有块级作用域只有全局和函数作用域,在if语句中定义的变量会被添加到当前执行环境,即仍然可以在if外部访问到,for循环也是这样,由for语句创建的变量i即使在for循环结束后,在循环外部的执行环境中仍然存在,一般情况下可以通过匿名函数来模仿块级作用域,像这样:

(function(){
  for (var i = 0; i<3; i--) {
    ……
  }
})

希望可以帮到你!

卡布琦诺 2018-09-16 10:57:06

从一个变量向另一个变量复制引用类型的值,复制的其实是指针,因此两个变量最终都指向同一个对象,当给变量赋新值时,此变量就不再指向原来的对象了;数组是引用类型的 , 如题中b=a相当于a与b指向同一个地址 , 但是a=[4,44]之后改变了a的地址 , 所以b不会受到影响 为[4] . 后面又把a=b指向了同一个地址 ,此时为b添加元素 , 因为a、b的地址都没有改变 ,a也会随之改变 ,所以a为[4,44] ,希望可以帮到你~


  • 提问者 慕神2393367 #1
    是不是可以理解成。引用类型的值就是指针呢
    2018-09-16 10:59:11
  • 卡布琦诺 回复 提问者 慕神2393367 #2
    可以这样理解哦~
    2018-09-16 11:08:00
  • 提问者 慕神2393367 回复 卡布琦诺 #3
    还有一个问题。js不是只有全局和函数作用域么。没有块级。那为什么for循环中的i是局部的作用域?
    2018-09-16 11:21:55
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
进击JavaScript核心 2018
  • 参与学习       466    人
  • 提交作业       74    份
  • 解答问题       635    个

JavaScript不仅能实现静态页面到动态特效的转变,还能完成数据的动态交互,但是关于js到底功能有多强大,大家还是有所期待的,本路径将带你深入到js中,一一揭开JavaScript的神秘面纱。

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

在线咨询

领取优惠

免费试听

领取大纲

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