Я не могу обдумать эту причуду.
[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"
, но я не могу найти, какой тип или операция выполняется.
Я не могу обдумать эту причуду.
[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"
, но я не могу найти, какой тип или операция выполняется.
[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`.
Второй [...]
не может быть массивом, поэтому его операция индекса массива. И содержимое операции индекса не является ограниченным списком операндов, а единственным выражением.
Подробнее о запятой здесь.
Потому что (1,2) == 2
. Вы наткнулись на запятую (или более простое объяснение здесь).
Если запятые не отображаются в списке объявлений, списке параметров, объекте или массиве, они действуют как любой другой двоичный оператор. x, y
оценивает x
, затем оценивает y
и дает результат.
[1,2,3,4,5,6][1,2,3];
Здесь второе поле, то есть [1,2,3]
, становится [3]
, т.е. последним элементом, поэтому результат будет равен 4
например, если вы сохраняете [1,2,3,4,5,6]
в массиве
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*
Но когда вы помещаете оператор + между ними, тогда вторая квадратная скобка не упоминает индекс. Это скорее другой массив Вот почему вы получаете
[1,2,3] + [1,2] = 1,2,31,2
то есть.
var arr_1=[1,2,3];
var arr_2=[1,2];
arr_1 + arr_2; // i.e. 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"
. Тогда последний указатель будет указывать на 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"