网上的含义很多很好很完美。不过对于教会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
请自己总结一下:修改的时候和内存储存地址的关系,复制/修改/没关系