JavaScript函数传参是按指传递还是按引用传递

<html>
<head>
    <script type="text/javascript">
        function test(reference) {
            reference.name = 'logic';
            reference = new Object();
            reference.name = 'change';
        }
        var person = new Object();

        person.name = 'luohao';

        test(person);

        console.log(person.name);
    </script>
</head>
<body>
</body>

</html>

假如按引用传参:那么在函数test内部reference修改了指向,因此最终输出结果因该是change

但是实际上结果输出的却是logic。那说明什么呢?说明person没有改变指向。但是如果没有指向,那为什么

name属性的值发生改变呢。因为参数是按值传递的。也就是说,有两个引用指向了同一个对象。

猜你喜欢

转载自blog.csdn.net/qq_23143555/article/details/80904365