Я получил этот вопрос из интервью,
[1,2] + [4,5,6][1]
JavaScript дает ответ 1,25.
Как это происходит? Пожалуйста, объясните четко.
Я получил этот вопрос из интервью,
[1,2] + [4,5,6][1]
JavaScript дает ответ 1,25.
Как это происходит? Пожалуйста, объясните четко.
Давайте начнем с последней части и напишем ее более подробно
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"
Он разбивается следующим образом:
Начиная с:
[1,2] + [4,5,6][1]
Во-первых, каждая сторона получает оценку, а так как правая часть является инициализатором массива и поиском, она выходит на 5:
[1,2] + 5
"1,2" + 5
Когда вы используете +, где каждая из сторон является строкой, результатом является конкатенация строк.
Сначала [4,5,6][1] оценивает число 5
Затем оператор + применяется к первому аргументу, который является Array, а не a Number, поэтому javascript предполагает, что вы выполняете конкатенацию строк, а не добавление. Ваш массив [1,2] становится строкой, которая "1,2". Вы можете увидеть это самостоятельно с помощью [1,2].toString().
Число 5 теперь добавляется к строке, поэтому оно преобразуется в строку и добавляется вместе, чтобы получить "1,25".