为什么JavaScript中的 = 8?
我无法围绕这个怪癖绕开我的思绪。
[1,2,3,4,5,6][1,2,3]; // 4 [1,2,3,4,5,6][1,2]; // 3
我知道[1,2,3] + [1,2] = "1,2,31,2"
,但我无法find正在执行的types或操作。
[1,2,3,4,5,6][1,2,3]; ^ ^ | | array + — array subscript access operation, where index is `1,2,3`, which is an expression that evaluates to `3`.
第二个不能是一个数组,所以它是一个数组下标操作。 下标操作的内容不是分隔的操作数列表,而是单个expression式。
在这里了解更多关于逗号运算符的信息 。
因为(1,2) == 2
。 你偶然发现了逗号运算符 (或简单的解释 )。
除非逗号出现在声明列表,参数列表,对象或数组文字中,否则它们就像任何其他二元运算符一样。 x, y
评估x
,然后评估y
并得出结果。
[1,2,3,4,5,6][1,2,3];
这里第二个盒子[1,2,3]
变成[3]
即最后一个项目,所以如果你将[1,2,3,4,5,6]
放在一个数组中,结果将会是4
var arr=[1,2,3,4,5,6]; arr[3]; // as [1,2,3] in the place of index is equal to [3]
同样
*var arr2=[1,2,3,4,5,6]; // arr[1,2] or arr[2] will give 3*
但是当你在中间放置一个+运算符时,第二个方括号就不用提索引。 这是另一个arrays这就是为什么你得到
[1,2,3] + [1,2] = 1,2,31,2
即
var arr_1=[1,2,3]; var arr_2=[1,2]; arr_1 + arr_2; // ie 1,2,31,2
基本上在第一种情况下,它被用作数组的索引,在第二种情况下,它本身就是一个数组。
第二个数组是指向第一个数组的指针。 它将获得第一个数组中的每个项目的值。 例如:
var arr=["a","b","c","d","e"][1,2,3]
让firstArray = ["a","b","c","d","e"]
第二个数组首先指向b,因为firstArray[1] = "b"
。 那么第二个指针会指向c,因为firstArray[2] = "c"
。 然后,由于firstArray[3] = "d"
,最后一个指针将指向firstArray[3] = "d"
。 因此,它取最后的值,即“d”。 你可以这样看:
var firstArray=["a","b","c","d"] var arr = firstArray[1,2,3] console.log(arr) //this will be equal to "d"
或者如果你改变你的序列像这样
var firstArray=["a","b","c","d"] var arr = firstArray[1,2,0] console.log(arr) //this will be equal to "a"