Javascript多重任务说明?

var a=b=1; ,我已经知道ab都有相同的价值。

但我的问题是:

a1还是从b获得它的值?

我做了一个小测试

/*1*/   (function (){
/*2*/     var j = window.j = function (){ alert('3');};
/*3*/     window.j2 = j;
/*4*/   })();
/*5*/   
/*6*/   window.j(); //3
/*7*/   window.j=null;
/*8*/   window.j2();//3

正如你可以看到第8行产生3所以我认为a不是b的值,而是1的值。

我对吗 ?

可视化:

(function (){
  var j = window.j = function (){ alert('3');};
      |
      |          ^        ^
      |          |        |            //which one ?
      +----------+--------+  
})();

JavaScript中的作业从右到左起作用。 所以你从window.j获得了你的价值。 重新设置window.j不会影响结果,因为Javascript变量总是按值传递,异常是数组或对象。

通过JS对象中的ref传递值的示例:

var obj = { x: 2 };
var anotherObj = obj;
anotherObj.x++;
alert(obj.x); //3 

您可以在这里找到更多信息。

这个答案中有更多有用的例子。


“=”运算符与右侧相关联,因此“a = b = 1”等同于“a =(b = 1)”。 所以1先分配给b,结果为1,然后分配给a。


JavaScript中的分配是正确的关联,所以你是正确的。 在

a = b = c;

a需要的值b在转让的时间,因此,如果b在后面分配给别的东西, a保留其值(这恰好是一样c

链接地址: http://www.djcxy.com/p/69989.html

上一篇: Javascript multiple assignment clarification?

下一篇: JavaScript assigning self variable