JavaScript中方法传参后数据是否变化问题?
当传入的参数是基本数据类型时:
function changeVariable(variable) {
variable = 'codexgh';
console.log('changeVariable方法里' + variable);
}
let variable = 123;
changeVariable(variable);
console.log('changeVariable 方法外' + variable);
运行结果:
当传入的参数是引用数据类型时:
//声明一个方法
function changeArr(arr) {
arr[0] = 200;
console.log('对象');
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
}
let mainArr = [1, 2, 3, 4, 5]
changeArr(mainArr);
console.log('main 方法');
for (let i = 0; i < mainArr.length; i++) {
console.log(mainArr[i]);
}
运行结果:
结论:
通过上面的运行结果可知,当传入的参数是 引用数据类型时,如果方法里修改了数据,则方法外的数据也会改变,主要是因为引入数据类型传递的地址;当传入的参数是 基本数据类型时,如果方法里修改了数据,而方法外的数据不会改变,主要是因为基本数据类型传递的是数值;