参考: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);; });