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判断两个日期是否相等的方法
Sep 10 Javascript
使用jQuery判断IE浏览器版本的代码
Jun 14 Javascript
jQuery插件slides实现无缝轮播图特效
Apr 17 Javascript
jquery对Json的各种遍历方法总结(必看篇)
Sep 29 Javascript
jquery pagination分页插件使用详解(后台struts2)
Jan 22 Javascript
基于cookie实现zTree树刷新后展开状态不变
Feb 28 Javascript
JS交互点击WKWebView中的图片实现预览效果
Jan 05 Javascript
浅谈Vue Element中Select下拉框选取值的问题
Mar 01 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
Mar 09 Javascript
angular2实现统一的http请求头方法
Aug 13 Javascript
layui获取多选框中的值方法
Aug 15 Javascript
Vue动态加载异步组件的方法
Nov 21 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
PHP中实现crontab代码分享
2015/03/26 PHP
php查询操作实现投票功能
2016/05/09 PHP
项目中应用Redis+Php的场景
2016/05/22 PHP
利用PHP命令行模式采集股票趋势信息
2016/08/09 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
2019/09/27 PHP
类之Prototype.js学习
2007/06/13 Javascript
Javascript 继承实现例子
2009/08/12 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
node.js中的fs.futimesSync方法使用说明
2014/12/17 Javascript
JavaScript String 对象常用方法总结
2016/04/28 Javascript
jQuery实现移动端手机商城购物车功能
2016/09/24 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
node.js的事件机制
2017/02/08 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
2017/11/27 Javascript
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
Python 中 Meta Classes详解
2016/02/13 Python
一键搞定python连接mysql驱动有关问题(windows版本)
2016/04/23 Python
详解python 注释、变量、类型
2018/08/10 Python
Django 在iframe里跳转顶层url的例子
2019/08/21 Python
Python常用模块logging——日志输出功能(示例代码)
2019/11/20 Python
python 如何调用远程接口
2020/09/11 Python
购买200个世界上最好的内衣品牌:Bare Necessities
2017/02/11 全球购物
MADE荷兰:提供原创设计师家具
2018/04/03 全球购物
Nike瑞士官网:Nike CH
2021/01/18 全球购物
公司庆典邀请函范文
2014/01/13 职场文书
大学自主招生自荐信范文
2014/02/26 职场文书
《数星星的孩子》教学反思
2014/04/11 职场文书
大学生第一学年自我鉴定
2014/09/12 职场文书
2014办公室副主任四风对照检查材料思想汇报
2014/09/20 职场文书
房地产销售员岗位职责
2015/04/11 职场文书
校园之声广播稿
2015/08/18 职场文书
前端学习——JavaScript原生实现购物车案例
2021/03/31 Javascript
java解析XML详解
2021/07/09 Java/Android