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代码
Nov 20 Javascript
ajax中get和post的说明及使用与区别
Dec 23 Javascript
Mac地址验证的javascript代码
Nov 09 Javascript
javaScript使用EL表达式的几种方式
May 27 Javascript
jQuery html()方法使用不了无法显示内容的问题
Aug 06 Javascript
老生常谈js动态添加事件--- 事件委托
Jul 19 Javascript
AngularJS基础 ng-list 指令详解及示例代码
Aug 02 Javascript
再谈javascript注入 黑客必备!
Sep 14 Javascript
浅谈对Angular中的生命周期钩子的理解
Jul 31 Javascript
微信小程序实现带参数的分享功能(两种方法)
May 17 Javascript
Webpack中SplitChunksPlugin 配置参数详解
Mar 24 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
May 13 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
WordPress用户登录框密码的隐藏与部分显示技巧
2015/12/31 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
Iframe 自适应高度并实时监控高度变化的js代码
2009/10/30 Javascript
按给定几率进行随机抽取的js代码
2010/12/28 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
javascript编写实用的省市选择器
2015/02/12 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
javascript实现一个数值加法函数
2015/06/26 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
JavaScript核心语法总结(推荐)
2016/06/02 Javascript
JavaScript cookie详解及简单实例应用
2016/12/31 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
JS实现浏览上传文件的代码
2017/08/23 Javascript
JavaScript门面模式详解
2017/10/19 Javascript
JS+CSS实现滚动数字时钟效果
2017/12/25 Javascript
详解Vue改变数组中对象的属性不重新渲染View的解决方案
2018/09/21 Javascript
使用npm命令提示: 'npm' 不是内部或外部命令,也不是可运行的程序的处理方法
2020/05/14 Javascript
Javascript实现关闭广告效果
2021/01/29 Javascript
python制作花瓣网美女图片爬虫
2015/10/28 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
2018/04/18 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
python安装cx_Oracle和wxPython的方法
2020/09/14 Python
GitHub上值得推荐的8个python 项目
2020/10/30 Python
用html5的canvas和JavaScript创建一个绘图程序的简单实例
2016/07/06 HTML / CSS
毕业生物理教师求职信
2013/10/17 职场文书
药品促销活动方案
2014/02/14 职场文书
招标保密承诺书
2015/01/20 职场文书
2015年母亲节活动总结
2015/02/10 职场文书
职场新人知识:如何制定一份合理的工作计划?
2019/09/11 职场文书
使用Python获取字典键对应值的方法
2022/04/26 Python
Python如何让字典保持有序排列
2022/04/29 Python
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers
Django框架中表单的用法
2022/06/10 Python