码迷,mamicode.com
首页 > Web开发 > 详细

js基本类型 引用类型

时间:2016-12-12 23:01:15      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:作用域   示例   强制   tar   类型   作用   targe   ons   tps   

参考 https://segmentfault.com/a/1190000005794070 http://blog.csdn.net/yummy_go/article/details/50504688

先看示例:

(function () {

    var temp=11.11;
    function change(value) {
        value=22.22;
    }
    change(temp);
    console.log(temp); //11.11 未改变

})();
(function () {

    function change(value) {
        value.name = "mm"
    }
    var obj={name:"meng"};
    change(obj);
    console.log(obj.name);  //mm 改变
 
})();

从上面的例子可以看出,基础类型(String,Boolean,Number)中形参不改变实参,引用类型(Array,Object)中形参改变了实参。

究其原理,首先说明,js是按值传递的。基础类型正好符合这一点,而引用类型“改变”这种传递的原因是,对象(或数组)中的实例引用都指向了同一块内存,即共同的父类,修改其中一个,也就改变了父类和兄弟类。

突然想到,前两天整理的“深度克隆” http://www.cnblogs.com/chenluomenggongzi/p/6160525.html

其实也是同样的原理,浅克隆错误的原因是:把引用类型错误的当成是基础类型去克隆了

还有angular中的坑 http://www.cnblogs.com/chenluomenggongzi/p/6151417.html 第四条

其实原理也类似。只是它强制把基础类型变成了引用类型,从而使得不同作用域可以访问同一处内存。

js基本类型 引用类型

标签:作用域   示例   强制   tar   类型   作用   targe   ons   tps   

原文地址:http://www.cnblogs.com/chenluomenggongzi/p/6165873.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!