我在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
我弄清楚它是如何工作的。它为我节省了一系列均衡。不过,我想知道这种奇怪的语法。它是如何被调用的,我在哪里可以阅读它?
答案 0 :(得分:2)
=
运算符返回分配的值,以便(b = x)
返回x
的值。这会导致x[2]
被分配到c
。
(注意:“返回x
”已更改为“根据评论返回x
的值”
答案 1 :(得分:0)
见下文
b=x
将x
的数据分配给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)?
您可以在此处找到有关此内容的其他说明:
希望这有帮助
答案 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
,因此我认为这是不好的做法。