变量初始化中的括号

时间:2012-01-29 08:32:01

标签: javascript

我在JavaScript中做了一个实验:

var x=[  "1","2","3","4","5","6"];

c=(b = x)[2] ;   //<--- what is this syntax?

alert(b ); // 1,2,3,4,5,6

alert(c ); // 3 

我弄清楚它是如何工作的。它为我节省了一系列均衡。不过,我想知道这种奇怪的语法。它是如何被调用的,我在哪里可以阅读它?

5 个答案:

答案 0 :(得分:2)

=运算符返回分配的值,以便(b = x)返回x的值。这会导致x[2]被分配到c

(注意:“返回x”已更改为“根据评论返回x的值”

答案 1 :(得分:0)

见下文

b=xx的数据分配给b,因此您会收到警告1,2,3,4,5,6

c=(b=x)[2]显示数组的第二个内容,即3。

以下是c=(b=x)[2]的工作原理

c=(b=x)[2]

b=x

c=b[2]

如果您需要更多详细信息,请与我们联系......

答案 2 :(得分:0)

这是因为分配操作符在java脚本中返回值。

这样想: 你做了一个任务:

b = x;

现在,在面向对象的术语中,它就像调用一个方法= on b而x作为参数

b。=(x)

这里'='就像一个方法名称

现在如果是方法,为什么它不能返回一个值(它的返回类型不是void)?

您可以在此处找到有关此内容的其他说明:

Link1 Link2

希望这有帮助

答案 3 :(得分:0)

var x = ["1","2","3","4","5","6"];
c=(b = x)[2]; // b = x; -> shallow copy of the array
              // b      -> now hods the array of x
              // b[2]   -> get the second element of the array
alert(b );    // b is pointing to the array

alert(c );    // c has the 3-rd element (array counting is from 0 - 0,1,2)

b.push("7");  // we add a new item to the array
alert(b);     // 1,2,3,4,5,6
alert(x);     //1,2,3,4,5,6,7 !

答案 4 :(得分:0)

相同的代码可以写成:

var x = b = ["1","2","3","4","5","6"], c = b[2];
console.log(b); //=> 1,2,3,4,5,6
console.log(c); //=> 3

甚至:

var c = (x = b = ["1","2","3","4","5","6"])[2];
console.log(b); //=> 1,2,3,4,5,6
console.log(c); //=> 3

var c = (b=x)[2]中,括号强制b=x先执行。无论如何,在两种情况下,例如在函数范围内使用时,该语句将在全局范围内创建变量b,因此我认为这是不好的做法。