js 值传递,引用传递

参考:http://www.cnblogs.com/lcngu/p/5876273.html

  JS的基本类型,是按值传递的。

  对象类型按共享传递的(call by sharing,也叫按对象传递、按对象共享传递)。

  总之,基本类型是按值传递,而对于对象来说传入的是对象指向的地址,也可以认为其是特殊的按值传递。如果在函数内对对象的属性进行操作,实际就是对其指向对象的属性进行操作。但是,如果对其整体进行操作(比如:o = 100或者o = []),其实际是新定于了对象,实参的引用地址为新的对象的引用地址,与原来的引用没有任何关系,所以不会对原来的对象造成改变。

  比如,ajax请求返回的json值需要被多次赋值,而且可能有修改,有时会造成赋值错误。

  解决方法:

  先将返回的json数据转为字符串,再使用转化的字符串做操作。转化后的字符串再次赋值就为值传递,不会相互影响

$.get("xxxxxxx", function(result){
        var znode = JSON.stringify(result);
        var lookUpNodes = $.parseJSON(znode);;
        var controlNodes = $.parseJSON(znode);;
});

 

posted on 2017-11-03 14:46  简单,快乐  阅读(700)  评论(0编辑  收藏  举报