Как [1,2] + [4,5,6] [1] = 1,25 в JavaScript
Я получил этот вопрос из интервью,
[1,2] + [4,5,6][1]
JavaScript дает ответ 1,25.
Как это происходит? Пожалуйста, объясните четко.
Ответы
Ответ 1
Давайте начнем с последней части и напишем ее более подробно
var arr = [4,5,6];
var value = arr[1];
То же, что и
[4,5,6][1]
а массивы основаны на нулевом значении, что дает 5
, поэтому мы действительно имеем
[1,2] + 5;
Первая часть равна
[1,2].toString(),
и возвращает строку "1,2"
, потому что массив преобразуется в строку при попытке использовать ее в таком выражении, поскольку массивы не могут быть добавлены к числам, а затем мы имеем
"1,2" + 5
Конкатенация строк с номерами дает строки и добавление строк вместе, мы получаем
"1,25"
Ответ 2
Он разбивается следующим образом:
Начиная с:
[1,2] + [4,5,6][1]
Во-первых, каждая сторона получает оценку, а так как правая часть является инициализатором массива и поиском, она выходит на 5
:
[1,2] + 5
Теперь оператор +
начинает свою работу. Он не определен для массивов, первое, что он делает, это попытаться преобразовать его операнды в строки или цифры. В случае с массивом это будет строка, как из Array#toString
, которая делает Array#join
, давая нам:
"1,2" + 5
Когда вы используете +
, где каждая из сторон является строкой, результатом является конкатенация строк.
Ответ 3
Сначала [4,5,6][1]
оценивает число 5
Затем оператор +
применяется к первому аргументу, который является Array
, а не a Number
, поэтому javascript предполагает, что вы выполняете конкатенацию строк, а не добавление. Ваш массив [1,2]
становится строкой, которая "1,2"
. Вы можете увидеть это самостоятельно с помощью [1,2].toString()
.
Число 5
теперь добавляется к строке, поэтому оно преобразуется в строку и добавляется вместе, чтобы получить "1,25"
.