浅析JavaScript函数的参数
ECAMScript函数不介意传递进来多少个参数,也不介意传递的参数的类型,即使定义的函数只接受两个参数,当调用该函数时没有传递参数,甚至传递了三个参数等等都无所谓,这是因为在ECAMScript中参数在内部是用一个数组表示的,函数接受到的始终是一个数组。在函数体内可以通过arguments对象来访问这个参数数组,获取到传递的每一个参数值。arguments[0]可以用来访问调用该函数时传递的第一个参数,以此类推...以下两个函数function1和function2其实是等价的可以实现同样的效果。注:在实际中不要把两个同名函数定义在一个页面中,后面的函数会覆盖前面的函数。ECAMScript中没有类似于Java中的重载。
//function1
function sayHi(name, message){
alert("name: " + name + "message: " + message);
} //function2
function sayHi(){
alert("name: " + arguments[0] + "message: " + arguments[1]);
}
以上这个例子说明了函数中定义的参数其实只是提供了便利了而已,不是必须的。可以通过访问arguments的lenght属性得到调用该函数时传递了多少个参数。
有一个比较有趣的地方是arguments始终与函数相应命名参数同步。当我们使用arguments对象修改了参数的值时,下面arguments[1]改变了传入的第二个参数的值,而num2同时做出了改变,然而它们并不是访问相同的内存空间,它们的内存空间是独立地,但是值会保持同步。
function doAdd(num1, num2){
arguments[1] = 10;
return arguments[0] + num2;
}
以上函数如果执行doAdd(10),则第一个参数会赋值10,而第二个参数会赋值undefined。
另外,ECAMScript中所有参数传递的都是值,不可能通过引用传递参数,跟java一样的原理嘛。
浅析JavaScript函数的参数的更多相关文章
- Javascript函数的参数arguments
arguments Description 在所有的函数中有一个arguments对象,arguments对象指向函数的参数,arguments object is an Array-like obj ...
- 【JavaScript】JavaScript函数的参数
要访问js函数中传入的所有参数,可以使用特殊的arguments变量.但是虽然可以像访问数组一样从arguments变量中读取参数,但arguments并非真正的数组.例如,arguments没有pu ...
- 深入理解javascript函数系列第二篇——函数参数
× 目录 [1]arguments [2]内部属性 [3]函数重载[4]参数传递 前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传 ...
- 理解JavaScript函数参数
前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,甚至可以不传参数. arguments javascri ...
- 深入理解JavaScript函数参数
前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,甚至可以不传参数. arguments javascri ...
- 第十篇--------javascript函数-参数
javascript函数的参数:形参,实参 //function 参数 //形参列表 function test(a,b,c,d){ //alert(test.length); //形参个数,4个 / ...
- 细说javascript函数
javascript函数是一个比较奇怪的东西,接触一段时间你就会犯迷糊,弄不明白它到底是什么了.你是否会因为有的javascript函数没有名字而莫名其妙,是否会因为javascript函数的参数没有 ...
- 在JavaScript函数中使用EL表达式注意的事项
最近在使用JSP显示从Servlet带过来的数据时,大量的使用到了EL表达式,并且有些EL表达式是在使用到JavaScript的函数时作为参数传入的,举个例子,比如下面的样子: 这个HTML标签的意思 ...
- web前端学习(四)JavaScript学习笔记部分(3)-- JavaScript函数+异常处理+事件处理
1.Javascript函数-了解函数的用途 1.1.函数: 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块 2.Javascript函数-定义函数 2.1.function必须小写 3. ...
随机推荐
- Curse of Dimensionality
Curse of Dimensionality Curse of Dimensionality refers to non-intuitive properties of data observed ...
- Codeforces Round #364 (Div. 2)->A. Cards
A. Cards time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...
- OpenLayers3 online build
openlayers3使用了一个比较复杂的build工具,从github上下载下来的代码中并没有build之后的版本,要配置build环境又比较繁琐,好在官方的example中提供了在线的版本,下面就 ...
- PHP7安装笔记
PHP7安装笔记 时间 -- :: 喵了个咪 原文 http://www.hdj.me/php7-install-note 主题 PHP # 安装mcrypt yum install -y php-m ...
- iOS-CALayer遮罩效果
self.view.backgroundColor = [UIColor blackColor]; , , , ); self.imageLayer.contents = (__ ...
- C#--判断当前是否是移动设备和设备的型号
--如果是移动设备是true var ismobile = System.Web.HttpContext.Current.Request.Browser.IsMobileDevice; --设备型号( ...
- Node 出现 uncaughtException 之后的优雅退出方案
Node 的异步特性是它最大的魅力,但是在带来便利的同时也带来了不少麻烦和坑,错误捕获就是一个.由于 Node 的异步特性,导致我们无法使用 try/catch 来捕获回调函数中的异常,例如: try ...
- 浅谈mysql中varchar(m)与char(n)的区别与联系
mysql建表长度的限制 在mysql建表时,出现以下报错信息: 错误一:行大小过大,所使用的表这种类型的最大的行大小,不算BLOB类型,是65535.(这是我翻译的) 原因是MySQL在建表的 ...
- jquery easyUi 配置默认页码
jquery easyUI用pagenation 属性如果修改其默认加载页面显示,配置该怎样写? 注意区分datagrid的pagenation分页的区别,代码如下. if ($.fn.paginat ...
- JLINK固件丢失或升级固件后提示Clone的解决办法
J-LINK V8固件烧录指导 J-LINK 是使用过程中,如果内部固件意外损坏或丢失,请参考下面操作步骤说明,重新烧录JLINK固件. 安装固件烧录软件 请ATMEL官方网址下载AT91-ISP下载 ...