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 相关文章推荐
学习ExtJS 访问容器对象
Oct 07 Javascript
jQuery EasyUi实战教程之布局篇
Jan 26 Javascript
jQuery插件dataTables添加序号列的方法
Jul 06 Javascript
通过JS获取Request.QueryString()参数的值实现方法
Sep 27 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
Nov 25 Javascript
在点击div中的p时,如何阻止事件冒泡
Feb 07 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
Aug 03 Javascript
React Native基础入门之初步使用Flexbox布局
Jul 02 Javascript
微信小程序使用npm支持踩坑
Nov 07 Javascript
深入解析koa之异步回调处理
Jun 17 Javascript
基于vue-cli3和element实现登陆页面
Nov 13 Javascript
Vue 根据条件判断van-tab的显示方式
Aug 03 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
咖啡因含量是由谁决定的?低因咖啡怎么来?低因咖啡适合什么人喝
2021/03/06 新手入门
php 过滤英文标点符号及过滤中文标点符号代码
2014/06/12 PHP
ThinkPHP实现批量删除数据的代码实例
2014/07/02 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
2016/01/07 PHP
一个多次搜索+多次传值的解决方案
2007/01/20 Javascript
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
始终在屏幕中间显示Div的代码(css+js)
2011/03/10 Javascript
单元选择合并变色示例代码
2014/05/26 Javascript
JS中取二维数组中最大值的方法汇总
2016/04/17 Javascript
jQuery Validate让普通按钮触发表单验证的方法
2016/12/15 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
validationEngine 表单验证插件使用实例代码
2017/06/15 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
2017/08/18 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
2018/02/26 Javascript
基于Vue组件化的日期联动选择器功能的实现代码
2018/11/30 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
javascript设计模式 ? 策略模式原理与用法实例分析
2020/04/21 Javascript
python中的实例方法、静态方法、类方法、类变量和实例变量浅析
2014/04/26 Python
R语言 vs Python对比:数据分析哪家强?
2017/11/17 Python
Python实现读取Properties配置文件的方法
2018/03/29 Python
Python多进程原理与用法分析
2018/08/21 Python
Python完成毫秒级抢淘宝大单功能
2019/06/06 Python
Python模块 _winreg操作注册表
2020/02/05 Python
python实现随机加减法生成器
2020/02/24 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
Herschel Supply Co.美国:背包、手提袋及配件
2020/11/24 全球购物
javascript实现用户必须勾选协议实例讲解
2021/03/24 Javascript
工作违纪检讨书
2014/02/17 职场文书
常住证明范本
2015/06/23 职场文书
奠基仪式致辞
2015/07/30 职场文书
2019个人工作计划书的格式及范文!
2019/07/04 职场文书
婚礼必备主持词范本!
2019/07/23 职场文书