JS形参与实参问题
JavaScript的参数传递也都是采用值传递的方式进行传值。
(1) 通过实参调用函数的时候,传入函数里的是实参的副本而不是实参,因此在函数里面修改参数值并不会对实参造成影响。
例如:将全局变量作为参数传到函数内部修改之后并不影响变量自己
<script>
function test(value) {
//修改value的值
value = "局部变量";
alert("函数内部的变量值:"+value);//局部变量
}
var value = "全局变量";
test(value);
alert("函数外部的值:"+value)//全局变量
</script>
(2)函数的参数个数问题:
使用空参数没有任何问题,程序可以正常执行,只是JS没有传入实参的参数值将作为undefined处理。
JavaScript调用函数时对传入的实参并没有要求,即使定义函数时声明了多个形参,调用函数时也不要求必须传入相匹配的实参。因此JavaScript不存在函数重载;对JavaScript来说函数名字是唯一的标识类。
例如:如果定义两个名字相同的函数,不管参数个数,后面的函数会覆盖前面定义的函数:
<script>
function test() {
alert("无参函数")
}
function test(obj) {
alert(obj)
}
test();//undefined
// 会调用test(obj)函数,只是参数传入为undefined
</script>
上面的test函数始终调用第二个test(obj)函数。
没有传入的参数会被当为null和undefined处理。
例如:
<script>
function test(para1) {
alert(para1 == null);//true
alert(para1 == undefined);//true
}
test();
</script>
在JavaScript中,将一个变量赋值为undefined或null,老实说,几乎没区别。
undefined和null区别参考:http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html
JS形参与实参问题的更多相关文章
- js 形参和实参---2017-04-11
一.定义 1.实参(argument): 全称为"实际参数"是在调用时传递给函数的参数. 实参可以是常量.变量.表达式.函数等, 无论实参是何种类型的量,在进行函数调用时, ...
- javascript . 03 函数定义、函数参数(形参、实参)、函数的返回值、冒泡函数、函数的加载、局部变量与全局变量、隐式全局变量、JS预解析、是否是质数、斐波那契数列
1.1 知识点 函数:就是可以重复执行的代码块 2. 组成:参数,功能,返回值 为什么要用函数,因为一部分代码使用次数会很多,所以封装起来, 需要的时候调用 函数不调用,自己不会执行 同名函数会覆盖 ...
- js 函数中形参与实参的关系
函数中形参与实参的关系 对于形参和实参的定义,在 权威指南中有着明确的定义.但是,我们更在意的是它们之间的关系,到底形参会不会影响到实参? 形参到底会不会影响到实参? 对于这个问题的答案,请先看以下两 ...
- JavaScript中函数的形参和实参的实现原理剖析
我们都知道JS里面参数的传递是可以不一样的,比如我们有一个函数: <script type="text/javascript"> function one(a,b,c) ...
- 函数的形参和实参之arguments对象
当函数调用函数时候传入的实参比函数声明时候制定的形参要少时候,剩余的形参就设置成了undefined.例如 function getPropertyNames(o,/*optional*/a){ va ...
- c++形参改变实参(对指针的理解
这几天搞逻辑比较晕,居然把指针的概念都混淆了. eg:int *p;//当然不对指针初始化在有些编译器是通不过编译的,比如VS(尤其是选中了SDL) 指针p是一个对象,定义开始没有分配了内存空间,只是 ...
- C#形参,实参,值传递参数,引用传递参数,输出参数,参数数组的学习
1)形参 形参顾名思义就是形式上的参数,不是实际的参数,它代替实际传入方法的值.在方法体代码中代表了值本身参与运算.形参定义于参数中,它不同于方法体内局部变量,因为是一个变量,在它的作用域内不允许存在 ...
- c++形参和实参同名时,如何单步执行观察形参的变化。
c++形参和实参同名时,如何单步执行观察形参的变化? 方法:当程序运行到函数中时,添加变量观察即可.
- 关于Java中形参与实参的理解
今天阅读了一个写的非常棒的博文,通过此博文再次复习了Java中参数传递的知识(即值传递与引用传递的区别).参考网站http://www.cnblogs.com/binyue/p/3862276.htm ...
随机推荐
- 『JavaScript』核心
弱类型语言 JavaScript是一种弱类型的语言.变量可以根据所赋的值改变类型.原始类型之间也可以进行类型转换.其弱类型的物质为其带来了极大的灵活性. 注意:原始类型使用值传递,复合类型使用引用传递 ...
- 「学习记录」《数值分析》第三章计算实习题(Python语言)
第三题暂缺,之后补充. import matplotlib.pyplot as plt import numpy as np import scipy.optimize as so import sy ...
- SPRITEKIT游戏框架之关于PHYSICS物理引擎属性
Spritekit提供了一个默认的物理模拟系统,用来模拟真实物理世界,可以使得编程者将注意力从力学碰撞和重力模拟的计算中解放出来,通过简单地代码来实现物理碰撞的模拟,而将注意力集中在更需要花费精力的地 ...
- 关键词提取TF-IDF算法/关键字提取之TF-IDF算法
TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与信息探勘的常用加权技术.TF的意思是词频(Term - frequency), ...
- 感知机学习算法(PLA)
Perception Learning Algorithm, PLA 1.感知机 感知机是一种线性分类模型,属于判别模型. 感知机模型给出了由输入空间到输出空间的映射: f(X) = sign(WTX ...
- Spark实战练习02--处理分隔符
一.场景 devicestatus.txt 文件包含了来自于不同运营商的移动设备的数据,不同的数据格式,包括设备ID.当前状态.位置等等.注意,该文件中的记录具有不同的字段分隔符:一些使用逗号,一些使 ...
- 文本太长,用省略号显示的css样式
——html代码 <divid="d1" title="鼠标放上显示的文字"></div> ——css代码 #d1{ width:300 ...
- CodeForces Round #521 (Div.3) D. Cutting Out
http://codeforces.com/contest/1077/problem/D You are given an array ss consisting of nn integers. Yo ...
- Vue2.0 新手完全填坑攻略——从环境搭建到发布(转载)
强力推荐,详情请点击此链接http://www.jianshu.com/p/5ba253651c3b
- WebKit 渲染过程
webkit笔记,主要来自 朱永盛 <WebKit技术内幕> 学习笔记,转载就注明原著,该书是国内仅有的Webkit内核的书籍,学习的好导师,推荐有兴趣的朋友可以购买 Webkit渲染过程 ...