JavaScript变量数据类型转换与表达式运算符       var     a=b=c=4;       b=5;a  b  c的多少值分别是

解决方案 »

  1.   

    只有变量的值是对象,
    如 a = b = {id:1}; 这样 a 和 b 都指向同一个对象
    执行 a.id = 2; 实际上是先读取a指向的对象,再对对象的id属性赋值。这不是对变量直接赋值,a变量的值没有改变。
    那么 b.id 也是 2;
      

  2.   

    var a=b=c=4;//赋值分两步走,先是var a定义一个变量,而b,c是没有var所以会向上查找变量,
    //如果找不到就会给全局定义一个b,c变量。然后才是赋值过程,三者都等于4
    b=5;//这里只针对b重新赋值,不会影响到其他变量。哪怕是赋值的是复合数据类型(即地址引用)也不会影响别人。
    //只是赋值是对象,且有人修改对象属性时才要会影响,如楼上解释!
      

  3.   

    很多人问这类问题啊?不局限于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所指向的对象并不是同一个那么结果就了然了,常量型变量不受其他任何变量的改变而变动,除非修改他自己而引用型变量,则看引用对象的值