#javascript #arrays #reactjs
#javascript #массивы #reactjs
Вопрос:
У меня есть следующий код для выполнения некоторой операции над массивом, в данном случае [[1,2],[3,4]]
:
export default function App() {
const a = [
[1, 2],
[3, 4]
];
console.log(a, "- the array a in App");
const b = M(a);
return (
<div className="App">
<h1>Magic with loops.</h1>
</div>
);
}
function M(input) {
console.log(input, "-- input inside M");
const rows = input.length;
const columns = input[0].length;
/*for (let i = 0; i < rows; i ) {
for (let j = 0; j < columns; j ) {
input[i][j] = 0;
}
}*/
console.log(input, "-- input after for loop");
return input;
}
Когда цикл for закомментирован в функции M, я вижу, что массив [[1,2],[3,4]]
вышел из системы на консоли. Но когда я раскомментирую цикл for, все, что я вижу, это [[0,0],[0,0]]
для всех мест, в которые я регистрирую массив.
Для меня это выглядит так, как будто цикл for перебирает массив до того, как на консоли произойдет какое-либо протоколирование. Это то, что происходит? Если нет, то почему он выходит из [[0,0],[0,0]]
системы еще до запуска цикла for?
Заранее спасибо.
Ответ №1:
Потому что он передается по ссылке, и когда вы меняете ввод, вы меняете массив