作家
登录

Js从头学起(基本数据类型和引用类型的参数传递详细分析)

作者: 来源:www.28hudong.com 2013-03-30 00:33:42 阅读 我要评论

1、基本数据类型传递参数: 复制代码 代码如下:   funciton addTen(num){     num+=10;     return num;   }   var count=20;   var result=addTen(count);   alert(count);//20   alert(resullt);//30   执行结果是:20和30。在这段代码中,将变量count当做参数传递给了函数addTen,也就是相当于将变量count的值复制给了函数addTen的参数。这时addTen的参数num可以看做是函数内部的一个变量。在上段代码中,就相当于两个基本数据类型变量之间的值复制。而基本数据类型都有自己独立的内存地址,所以num和count是没有任何关系的,他们只是值相等而已,函数执行完毕后,count的值并没有改变。而函数外面的result是被直接赋值的,所以result的值就是函数的结果30。   2、引用类型传递参数: 复制代码 代码如下:   function setName(obj){     obj.name="LSN";   }   var person=new Object();   setName(person);   alert(person.name);//LSN   执行结果是:LSN。在这段代码中,函数setName的作用是给obj对象添加了一个属性name并给该属性赋值为"LSN",因为obj是引用类型,所以这里属于是将引用类型person赋值给了obj,也就是说person和obj引用了一个内存地址,所以当给obj新加了属性name时,在函数外面的person也跟着改变,最后person.naem的结果为LSN。   3、引用类型传递参数到底传的是值还是引用? 复制代码 代码如下:   function setName(obj){     obj.name="ABC";     obj=new Object();     obj.name="BCD";   }   var person=new Object();   setName(person);   alert(person.name);// ABC   执行结果是:ABC。实例3与实例2的区别是在函数中又加了2行代码,在给obj对象新加一个属性name并赋值后 又将obj定义成了一个新的对象(new Object()),定义新对象后又name赋上新的值“BCD”。这个时候如果是按引用传递的话,那么最后person对象就会自动修改为指向其name属性为"BCD"的新对象,但最后显示的却是“ABC”,这说明即使在函数内部修改了参数的值,但原始的引用还保持不变。实际上,当在函数内部obj=new Object()时 这个新的obj就已经成为函数内部的局部对象了,这个对象会在函数执行完毕后自动销毁。

  推荐阅读

  Javascript 中的 call 和 apply使用介绍

简单的说就是改变函数执行的上下文,这是最基本的用法。两个方法基本区别在于传参不同。 call(obj,arg1,arg2,arg3);call第一个参数传对象,可以是null。参数以逗号分开进行传值,参数可以是任何类型。 apply(obj,[>>>详细阅读


本文标题:Js从头学起(基本数据类型和引用类型的参数传递详细分析)

地址:http://www.17bianji.com/kaifa2/JS/23646.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)