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


Posted in Javascript onFebruary 16, 2012

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 相关文章推荐
JavaScript 参考教程
Dec 29 Javascript
Javascript无参数和有参数类继承问题解决方法
Mar 02 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
Mar 28 Javascript
详解Jquery的事件操作和文档操作
Dec 19 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
Dec 24 Javascript
数组Array的一些方法(总结)
Feb 17 Javascript
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
Jul 30 Javascript
看看“疫苗查询”小程序有温度的代码
Jul 31 Javascript
微信小程序框架wepy之动态控制类名
Sep 14 Javascript
angular6的table组件开发的实现示例
Dec 26 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
Jan 18 Javascript
layui 阻止图片上传的实例(before方法)
Sep 26 Javascript
通过JS获取用户本地图片路径并显示的代码
Feb 16 #Javascript
javascript简易缓动插件(源码打包)
Feb 16 #Javascript
基于jquery的textarea发布框限制文字字数输入(添加中文识别)
Feb 16 #Javascript
js URL参数的拼接方法比较
Feb 15 #Javascript
javascript题目,重写函数让其无限相加
Feb 15 #Javascript
用JQUERY增删元素的代码
Feb 14 #Javascript
修改jQuery Validation里默认的验证方法
Feb 14 #Javascript
You might like
杏林同学录(八)
2006/10/09 PHP
PHP 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
php转换颜色为其反色的方法
2015/04/27 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
Code: write(s,d) 输出连续字符串
2007/08/19 Javascript
jQuery入门知识简介
2010/03/04 Javascript
最简单的js图片切换效果实现代码
2011/09/24 Javascript
js螺旋动画效果的具体实例
2013/11/15 Javascript
利用JavaScript实现新闻滚动效果(实例代码)
2013/11/27 Javascript
js Dialog 去掉右上角的X关闭功能
2014/04/23 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
Bootstrap表单布局样式代码
2016/05/31 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
Node.js操作redis实现添加查询功能
2017/05/25 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
p5.js入门教程之键盘交互
2018/03/19 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
javascript实现文本框标签验证的实例代码
2018/10/14 Javascript
生产制造追溯系统之在线打印功能
2019/06/03 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
利用vue-i18n实现多语言切换效果的方法
2019/06/19 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
2019/11/13 Javascript
js实现简单的日历显示效果函数示例
2019/11/25 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
zbar解码二维码和条形码示例
2014/02/07 Python
python2.7使用plotly绘制本地散点图和折线图
2019/04/02 Python
基于Python计算圆周率pi代码实例
2020/03/25 Python
scrapy处理python爬虫调度详解
2020/11/23 Python
python爬虫工具例举说明
2020/11/30 Python
运动会广播稿500字
2014/01/28 职场文书
副职竞争上岗演讲稿
2014/05/12 职场文书
党员对十八届四中全会的期盼思想汇报范文
2014/10/17 职场文书
我们的节日端午节活动总结
2015/02/11 职场文书
教师继续教育反思周记
2015/06/25 职场文书
Android Gradle 插件自定义Plugin实现注意事项
2022/06/16 Java/Android