JavaScript变量数据

weixin_45605178 2019-09-19 07:20:08
JavaScript变量数据类型转换与表达式运算符 var a=b=c=4; b=5;a b c的多少值分别是
...全文
71 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
文盲老顾 2019-09-20
  • 打赏
  • 举报
回复
很多人问这类问题啊? 不局限于js,其他语言也一样 var a=b=c=d=3; 看看计算机干了什么 在内存中开辟出4个变量,abcd,这四个变量的值都是3; 如果修改其中一个值,其他值不跟着变动,为什么呢?因为变量是独立的,值是常量的 var a=b=c=d={id:1} var a=e={id:1} 看看计算机又干了什么 在内存中开辟出4个变量,abcd,这四个变量的值都是内存指针,指向同一个对象,而这个对象是{id:1} 然后再次开辟一个变量e,同时将a和e的值指向另一个对象,虽然新的对象也是{id:1},但与bcd所指向的对象并不是同一个 那么结果就了然了,常量型变量不受其他任何变量的改变而变动,除非修改他自己 而引用型变量,则看引用对象的值
scscms太阳光 2019-09-20
  • 打赏
  • 举报
回复
var a=b=c=4;//赋值分两步走,先是var a定义一个变量,而b,c是没有var所以会向上查找变量,
//如果找不到就会给全局定义一个b,c变量。然后才是赋值过程,三者都等于4
b=5;//这里只针对b重新赋值,不会影响到其他变量。哪怕是赋值的是复合数据类型(即地址引用)也不会影响别人。
//只是赋值是对象,且有人修改对象属性时才要会影响,如楼上解释!
天际的海浪 2019-09-19
  • 打赏
  • 举报
回复
只有变量的值是对象, 如 a = b = {id:1}; 这样 a 和 b 都指向同一个对象 执行 a.id = 2; 实际上是先读取a指向的对象,再对对象的id属性赋值。这不是对变量直接赋值,a变量的值没有改变。 那么 b.id 也是 2;
天际的海浪 2019-09-19
  • 打赏
  • 举报
回复
对一个变量直接赋值只会改变这一个变量的值,不会影响到其它变量。

87,991

社区成员

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

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