JavaScript中方法传参(基本数据类型和引入数据类型)后是否变化问题?

100 阅读1分钟

JavaScript中方法传参后数据是否变化问题?

当传入的参数是基本数据类型时:

    function changeVariable(variable) {
        variable = 'codexgh';
        console.log('changeVariable方法里' + variable);
    }

    let variable = 123;
    changeVariable(variable);
    console.log('changeVariable 方法外' + variable);

运行结果:

image.png

当传入的参数是引用数据类型时:

    //声明一个方法
    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]);
    }

运行结果:

image.png

结论:

通过上面的运行结果可知,当传入的参数是 引用数据类型时,如果方法里修改了数据,则方法外的数据也会改变,主要是因为引入数据类型传递的地址;当传入的参数是 基本数据类型时,如果方法里修改了数据,而方法外的数据不会改变,主要是因为基本数据类型传递的是数值;