JS函数参数的传递与同名参数实例分析


Posted in Javascript onMarch 16, 2020

本文实例讲述了JS函数参数的传递与同名参数。分享给大家供大家参考,具体如下:

函数参数的传递

函数参数如果是原始类型值,传递方式是值传递。这意味着,在函数体内修改参数值,不会影响函数外部。

var p = 2 
function f(p) {
 p = 3
}
f(p)
p // 2

上面代码中,变量p是一个原始类型的值,传入函数f的方式是值传递,因此在函数内部,p的值是原始值的拷贝,无论怎么修改,都不会影响到原始值。

但是,如果函数参数是复合类型,传入函数的方式是引用的传递,也就是说,传入函数的是一个地址,因此在函数内部修改参数,将会影响到原始值。

var obj = { p: 1 };

function f(o) {
 o.p = 2;
}
f(obj);

obj.p // 2

上面代码中,传入函数f的参数对象obj的地址。因此,在函数内部修改obj的属性p,会影响到原始值 。

注意,如果函数内部修改的,不是参数对象的某个属性,而是替换掉整个参数,这时不会影响到原始值 。

var obj = [1, 2, 3];

function f(o) {
 o = [2, 3, 4];
}
f(obj);

obj // [1, 2, 3]

上面代码中,在函数f内部,参数对象obj被整个替换成另一个值。这时不会影响到原始值。这是因为,形式参数(o)的值实际是参数obj的地址,重新对o赋值 ,导致o指向另一个地址,保存在原地址上的值当然不受影响。

函数中的同名参数

如果函数中出现了同名参数,则取最后出现的那个值

function f(a, a) {
 console.log(a);
}

f(1, 2) // 2

上面代码中,函数f有两个参数,且参数名都为a,取值 的时候,以后面的a为准,即使后面的a没有值,或者被省略,也是以其为准。

function f(a, a) {
 console.log(a);
}

f(1) // undefined

调用函数f的时候,没有提供第二个参数,a的取值就变成了undefined。这时,如果要获得第一个a的值,可以使用arguments对象。

function f(a, a) {
 console.log(arguments[0]);
}

f(1) // 1

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
jQuery操作Select选择的Text和Value(获取/设置/添加/删除)
Mar 06 Javascript
js中单引号与双引号冲突问题解决方法
Oct 04 Javascript
AngularJS入门教程之Select(选择框)详解
Jul 27 Javascript
jquery获取点击控件的绝对位置简单实例
Oct 13 Javascript
如何实现json数据可视化详解
Nov 24 Javascript
JavaScript简单生成 N~M 之间随机数的方法
Jan 13 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
Jun 17 Javascript
浅谈angular4实际项目搭建总结
Dec 01 Javascript
vue页面跳转后返回原页面初始位置方法
Feb 11 Javascript
vuex操作state对象的实例代码
Apr 25 Javascript
说说如何利用 Node.js 代理解决跨域问题
Apr 22 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
Nov 15 Javascript
vue css 引入asstes中的图片无法显示的四种解决方法
Mar 16 #Javascript
JS函数本身的作用域实例分析
Mar 16 #Javascript
JavaScript实现tab栏切换效果
Mar 16 #Javascript
vue-cli3使用mock数据的方法分析
Mar 16 #Javascript
vue-cli3.0实现一个多页面应用的历奇经历记录总结
Mar 16 #Javascript
vue从零实现一个消息通知组件的方法详解
Mar 16 #Javascript
JavaScript实现动态留言板
Mar 16 #Javascript
You might like
PHP学习之PHP表达式
2006/10/09 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
2012/10/24 PHP
php 提交表单 关闭layer弹窗iframe的实例讲解
2018/08/20 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
Thinkphp5.0框架视图view的循环标签用法示例
2019/10/12 PHP
php使用自带dom扩展进行元素匹配的原理解析
2020/05/29 PHP
使用js获取QueryString的方法小结
2010/02/28 Javascript
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
JavaScript中原型和原型链详解
2015/02/11 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
2015/05/28 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
Bootstrap作品展示站点实战项目2
2016/10/14 Javascript
js基础之DOM中元素对象的属性方法详解
2016/10/28 Javascript
nodejs实现发出蜂鸣声音(系统报警声)的方法
2017/01/18 NodeJs
jQuery 利用ztree实现树形表格的实例代码
2017/09/27 jQuery
vue项目总结之文件夹结构配置详解
2017/12/13 Javascript
Angular2+如何去除url中的#号详解
2017/12/20 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
JS实现的抛物线运动效果示例
2018/01/30 Javascript
在小程序中使用Echart图表的示例代码
2018/08/02 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
2018/11/21 Javascript
微信小程序实现星星评分效果
2020/11/01 Javascript
c++生成dll使用python调用dll的方法
2014/01/20 Python
Python Requests 基础入门
2016/04/07 Python
Python数据类型详解(二)列表
2016/05/08 Python
python特性语法之遍历、公共方法、引用
2018/08/08 Python
Python计算公交发车时间的完整代码
2020/02/12 Python
美国糖果店:Sugarfina
2019/02/21 全球购物
生物医学工程专业学生求职信范文分享
2013/12/14 职场文书
2014年母亲节演讲稿范文
2014/05/07 职场文书
篮球比赛口号
2014/06/10 职场文书
连锁超市项目计划书
2014/09/15 职场文书
利用Redis实现点赞功能的示例代码
2022/06/28 Redis