JS引用传递与值传递的区别

在函数调用中,传递一个数值时,我们称为“值传递”。

在函数调用中,传递的是对象时,我们一般称为“引用传递”

这两者的本质区别是:传递的数据类型不一样,值传递的是一个数值,而引用传递传递的是一个对象。

 function fn(a){ 

            a++;    

} ;

   console.log(a);

这个很明显会报错,因为没有创建变量a

    var a = 6;

    function fn(a){

        a++;

    }

    console.log(a);

这个结果 a 为 6 ,因为并没有调用函数 fn 所以函数找不到a ,a++ 并没有执行;

值传递

    var a = 6;

    function fn(a){

        a++;

    };

    fn(6);

    console.log(a);

这个结果 a 为 6, 因为这个fn 执行后把 参数6传给了 函数里边的 a ,在函数内部开辟了一个空间 a = 6 ,然后经过a++; a 为 7 ,  但结果并不会改变函数外面的 a 的值 ,所以结果还是 为6 .

在函数调用中,传递数值,我们成为“值传递”,

值传递特点:因为值传递的数据,地址和值是一个内容,所以在拷贝之后,改变新的,不会影响老的。

引用传递

    var a = 6;

    function fn(){

        a++;

    };

    fn(6);

    console.log(a);

这个结果为7,因为这个fn执行后把参数6 传给了函数 fn 但是函数fn 里并没有接受这个参数的 形参,  这是函数内部并没有 a 的空间 ,所以会自动向外面搜索 找到a 的值 这时 是对外部 a 的修改,所以会改变 a 的值。

引用传递的特点:因为引用传递的数据,地址和值是两部分内容,所以在默认拷贝之后,仅仅拷贝了地址,没有拷贝值,此时两个地址指向了同一个值,那么就会造成修改新的,会影响老的,因为只有一个值。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容