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 相关文章推荐
Firefox div高度自适应
Apr 28 Javascript
JavaScript简单实现网页回到顶部功能
Nov 12 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
Dec 02 Javascript
jQuery中通过ajax的get()函数读取页面的方法
Feb 29 Javascript
JavaScript获取客户端IP的方法(新方法)
Mar 11 Javascript
JS控制静态页面传递参数并获取参数应用
Aug 10 Javascript
JS实现的简单拖拽购物车功能示例【附源码下载】
Jan 03 Javascript
微信小程序实现之手势锁功能实例代码
Jul 19 Javascript
vue 中滚动条始终定位在底部的方法
Sep 03 Javascript
解决layui弹出层layer的area过大被遮挡的问题
Sep 21 Javascript
详解Vue中的Props与Data细微差别
Mar 02 Javascript
create-react-app开发常用配置教程
Jun 25 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
PHPlet在Windows下的安装
2006/10/09 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
PHP中类的继承和用法实例分析
2016/05/24 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
JavaScript经典效果集锦
2010/07/06 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
jquery采用oop模式class类的使用示例
2016/01/22 Javascript
jQuery中事件与动画的总结分享
2016/05/24 Javascript
Javascript中引用类型传递的知识点小结
2017/03/06 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
基于Vue实现图书管理功能
2017/10/17 Javascript
理解Koa2中的async&await的用法
2018/02/05 Javascript
ES6之模版字符串的具体使用
2018/05/17 Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
2018/12/17 Javascript
layUI实现三级导航菜单效果
2019/07/26 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
微信小程序通过websocket实时语音识别的实现代码
2020/08/19 Javascript
VUE Elemen-ui之穿梭框使用方法详解
2021/01/19 Javascript
为python设置socket代理的方法
2015/01/14 Python
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
Python算术运算符实例详解
2017/05/31 Python
python使用threading获取线程函数返回值的实现方法
2017/11/15 Python
python删除文件夹下相同文件和无法打开的图片
2019/07/16 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
2019/12/09 Python
如何将PySpark导入Python的放实现(2种)
2020/04/26 Python
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
Funko官方商店:源自美国,畅销全球搪胶收藏玩偶
2018/09/15 全球购物
美国最大最全的亚洲购物网站:美国亚米网(Yamibuy)
2020/05/05 全球购物
卖房协议书
2014/04/11 职场文书
党员创先争优活动总结
2014/05/04 职场文书
大学迎新生标语
2014/10/06 职场文书
2015年企业员工工作总结范文
2015/05/21 职场文书