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

 

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

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值