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 相关文章推荐
js新闻滚动 js如何实现新闻滚动效果
Jan 07 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
Apr 03 Javascript
jquery获取对象的方法足以应付常见的各种类型的对象
May 14 Javascript
Javascript小技巧之生成html元素
May 15 Javascript
JavaScript中变量声明有var和没var的区别示例介绍
Sep 15 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
Feb 13 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
Mar 04 Javascript
详解Backbone.js框架中的模型Model与其集合collection
May 05 Javascript
jQuery中设置form表单中action值的实现方法
May 25 Javascript
关于预加载InstantClick的问题解决方法
Sep 12 Javascript
微信小程序如何调用json数据接口并解析
Jun 29 Javascript
vue中data里面的数据相互使用方式
Jun 05 Vue.js
通过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
一个很方便的 XML 类!!原创的噢
2006/10/09 PHP
smarty静态实验表明,网络上是错的~呵呵
2006/11/25 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
PHP操作MongoDB GridFS 存储文件的详解
2013/06/20 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
php生成酷炫的四个字符验证码
2016/04/22 PHP
PHP和MYSQL实现分页导航思路详解
2017/04/11 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
2017/06/06 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
PHP大文件切割上传功能实例分析
2019/07/01 PHP
PHP实现的多进程控制demo示例
2019/07/22 PHP
Vue结合SignalR实现前后端实时消息同步
2017/09/19 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
Vue.js单向绑定和双向绑定实例分析
2018/08/14 Javascript
JavaScript模板引擎应用场景及实现原理详解
2018/12/14 Javascript
vue导航栏部分的动态渲染实例
2019/11/01 Javascript
BootStrap前端框架使用方法详解
2020/02/26 Javascript
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
Python 自动安装 Rising 杀毒软件
2009/04/24 Python
初步解析Python中的yield函数的用法
2015/04/03 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
Python matplotlib画图实例之绘制拥有彩条的图表
2017/12/28 Python
python用插值法绘制平滑曲线
2021/02/19 Python
钉钉群自定义机器人消息Python封装的实例
2019/02/20 Python
Pytorch实现GoogLeNet的方法
2019/08/18 Python
Python虚拟环境的创建和使用详解
2020/09/07 Python
python基于opencv实现人脸识别
2021/01/04 Python
美国最受欢迎的度假目的地优惠套餐:BookVIP
2018/09/27 全球购物
万豪国际住宅与别墅集团:Homes & Villas by Marriott International
2020/10/08 全球购物
超市业务员岗位职责
2013/12/05 职场文书
给实习单位的感谢信
2014/02/01 职场文书
清明节网上祭英烈寄语2015
2015/03/04 职场文书
2015学校六五普法工作总结
2015/04/22 职场文书
JavaScript+HTML实现学生信息管理系统
2021/04/20 Javascript
详解Python为什么不用设计模式
2021/06/24 Python