JavaScript-函数传参修改中的小坑

网上的含义很多很好很完美。不过对于教会6岁儿童这个标准远远不达标

请先这么理解:将 【字符串,布尔,数值】 称为普通值 (原始值)   【数组,函数,对象】称为高级值(引用值)

想一想,是不是绝大多数高级一点的功能都离不开【数组,函数,对象】,而普通值仅仅担任了传递数值,存储,判断等作用

一:普通值因为功能单一(轻),所以JavaScript对其进行修改就像我们搬起一个瘦的人,很轻松就可以搬起来

当要对普通值进行修改时JavaScript说:这么轻,好简单啊,来我们拷一份,别影响我已经定义好的值,在自己函数的作用域慢慢玩吧,不用还给我了

:高级值因为功能强大(重),所以JavaScript对其内部进行修改就像我们搬起一个胖的人,可以搬起来,但是非常费力

当要对高级值进行修改时JavaScript说:这货怎么这么重,不拷了,来,我给你,他在那,你自己弄吧,弄完记得还给我,弄成啥样你都得还我,咱们可只有一个啊

三:当我们对高级值进行重写时,JavaScript又说:你这个人事怎么这么多,修改内部值这种小事我还可以给你指一下,重写的话我就不管你了,和我外面已经定好的高级值没有一毛钱关系,在自己函数的作用域慢慢玩吧

一:对普通值进行修改

            var a=10;
            function change(num){
                var a=num;
            }
            change(100);
            alert(a);//10

二:对高级值里面的值进行修改

            var a={name:'jack'};
            function change(obj){
                obj.name='tom';
            }
            change(a);
            alert(a.name);//tom

三:对高级值进行重写

            var a={name:'jack'};
            function change(obj){
                obj={name:'bot'};
                console.log(obj.name);//bot
            }
            change(a);
            alert(a.name);//jack

请自己总结一下:修改的时候和内存储存地址的关系,复制/修改/没关系

猜你喜欢

转载自blog.csdn.net/Knoooooooow/article/details/82256751