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 学习笔记 错误处理
Jul 30 Javascript
JSQL SQLProxy 的 php 版本代码
May 05 Javascript
B/S模式项目中常用的javascript汇总
Dec 17 Javascript
node.js学习总结之调式代码的方法
Jun 25 Javascript
JQ技术实现注册页面带有校验密码强度
Jul 27 Javascript
AngularJS控制器之间的数据共享及通信详解
Aug 01 Javascript
WEB前端实现裁剪上传图片功能
Oct 17 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
Oct 27 Javascript
js定时器实现倒计时效果
Nov 05 Javascript
Node.js中package.json中库的版本号(~和^)
Apr 02 Javascript
小程序卡片切换效果组件wxCardSwiper的实现
Feb 13 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
Oct 30 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循环创建目录示例分享(php创建多级目录)
2014/03/04 PHP
Yii实现自动加载类地图的方法
2015/04/01 PHP
Thinkphp实现短信验证注册功能
2016/10/18 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
js实现目录定位正文示例
2013/11/14 Javascript
浅谈 javascript 事件处理
2015/01/04 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
js的各种排序算法实现(总结)
2016/07/23 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
jQuery通过ajax方法获取json数据不执行success的原因及解决方法
2016/10/15 Javascript
微信小程序 轮播图swiper详解及实例(源码下载)
2017/01/11 Javascript
React组件的三种写法总结
2017/01/12 Javascript
nodejs中全局变量的实例解析
2017/03/07 NodeJs
angular2 ng build部署后base文件路径问题详细解答
2017/07/15 Javascript
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
Vue瀑布流插件的使用示例
2018/09/19 Javascript
jQuery实现的简单歌词滚动功能示例
2019/01/07 jQuery
LayUi使用switch开关,动态的去控制它是否被启用的方法
2019/09/21 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
JavaScript switch语句使用方法简介
2019/12/30 Javascript
python连接mysql调用存储过程示例
2014/03/05 Python
简单介绍Python中的struct模块
2015/04/28 Python
详解Python验证码识别
2016/01/25 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
2017/08/25 Python
python+selenium实现163邮箱自动登陆的方法
2017/12/31 Python
基于pip install django失败时的解决方法
2018/06/12 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
2019/12/26 Python
Pytorch mask_select 函数的用法详解
2020/02/18 Python
英国香水店:The Perfume Shop
2017/03/27 全球购物
idealfit英国:世界领先的女性健身用品和运动衣物品牌
2017/11/25 全球购物
高尔夫球鞋、服装、手套和装备:FootJoy
2018/12/15 全球购物
大学迎新标语
2014/06/26 职场文书
关于倡议书的范文
2015/04/29 职场文书
刑事撤诉申请书
2015/05/18 职场文书
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers