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 相关文章推荐
可自己添加html的伪弹出框实现代码
Sep 08 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
Jan 07 Javascript
JavaScript中的eval()函数使用介绍
Dec 31 Javascript
深入理解JavaScript系列(31):设计模式之代理模式详解
Mar 03 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
May 13 Javascript
星期几的不同脚本写法(推荐)
Jun 01 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
Aug 19 Javascript
Html5+jQuery+CSS制作相册小记录
Dec 30 Javascript
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
Oct 10 jQuery
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
May 14 Javascript
js实现轮播图效果 纯js实现图片自动切换
Aug 09 Javascript
javascript实现移动端轮播图
Dec 09 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
BBS(php & mysql)完整版(一)
2006/10/09 PHP
PHPUnit PHP测试框架安装方法
2011/03/23 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
2018/05/23 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
PHP大文件及断点续传下载实现代码
2020/08/18 PHP
js加解密 脚本解密
2008/02/22 Javascript
Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
2009/08/09 Javascript
Javascript+CSS实现影像卷帘效果思路及代码
2014/10/20 Javascript
js实现九宫格拼图小游戏
2017/02/13 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
Vue computed计算属性的使用方法
2017/07/14 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
js表达式与运算符简单操作示例
2020/02/15 Javascript
Python中的闭包详细介绍和实例
2014/11/21 Python
Python处理RSS、ATOM模块FEEDPARSER介绍
2015/02/18 Python
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
Django框架中方法的访问和查找
2015/07/15 Python
Pyqt QImage 与 np array 转换方法
2019/06/27 Python
Django 实现Admin自动填充当前用户的示例代码
2019/11/18 Python
如何在sublime编辑器中安装python
2020/05/20 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
html标签之Object和EMBED标签详解
2013/07/04 HTML / CSS
PHP如何去执行一个SQL语句
2016/03/05 面试题
什么是命名空间(NameSpace)
2015/11/24 面试题
最新奶茶店创业计划书
2014/01/25 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
政府领导干部个人对照检查材料思想汇报
2014/09/24 职场文书
大学生迟到检讨书500字
2014/10/17 职场文书
司考复习计划
2015/01/19 职场文书
语文复习计划
2015/01/19 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
装修公司工程部经理岗位职责
2015/04/09 职场文书
机器人总动员观后感
2015/06/09 职场文书
遗嘱范文
2015/08/07 职场文书
四年级作文之说明文作文
2019/10/14 职场文书
Python一行代码实现自动发邮件功能
2021/05/30 Python