【发布时间】:2019-06-25 23:05:57
【问题描述】:
调用此函数时,函数不会修改传递的arr:
const animalTypes = [
new Animal( "wolf", "audio/wolf.mp3" ),
new Animal( "frog", "audio/frog.wav" ),
new Animal( "cow", "audio/cow.mp3" ),
new Animal( "snake", "audio/snake.mp3" )
];
function randomAnimalArray( arr, n ) {
arr = [];
for ( let i = 0; i < n; i++ ) {
arr.push( animalTypes[ Math.floor( Math.random() * animalTypes.length ) ] );
}
}
但是调用这个函数的时候会这样:
function testy(arr) {
for (let i = 0; i < arr.length; i++) {
arr[i]++;
}
}
我就是这样用的。控制台显示 []
let solutionArr = [], guessesArr = [];
function computerIsPlaying() {
let animalNumberEl = document.getElementById("animals-number");
randomAnimalArray(solutionArr, animalNumberEl.value);
console.log(solutionArr);
for (let i = 0; i < solutionArr.length; i++) {
solutionArr[i].makeSound();
}
}
【问题讨论】:
-
这是什么语言的?这是一种至关重要的信息,所以请将其添加为标签。
-
因为您正在用
arr = []中的新数组替换传入的任何数组。您不能修改 变量arr通过引用。
标签: javascript arrays pass-by-reference pass-by-value