js函数定义参数个数和实际传入参数的对比
因为js是一种弱类型的编程语言,对数据类型的要求没有其他编程语言的要求严格,所以在定义函数的时候不需要像java和C#一样对其传入参数的类型进行定义。那么传入参数的个数有没有影响呢?今天小猪就做了个实验。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
<html> <head> <title> 函数调用测试,参数个数和函数声明不一样多 </title> <script language="JavaScript"> function needTwoPara(p1,p2){ var a=arguments; var result='我是个需要2个参数的函数\n' +'您输入的参数的个数为:'+a.length+'\n' for(var i=0, len = a.length; i < len; i++){ result=result+'第'+(i+1)+'个参数为:'+a[i]+'\n' } result+='以上是用arguments来获得参数\n'; result+='下面用变量来获得参数:\n'; result+='p1:'+p1+'\n'; result+='p2:'+p2+'\n'; alert(result); } </script> </head> <body> <form> <input type="button" value="测试1--传递1个参数" onClick="JavaScript: needTwoPara('smallerpig');"> </form> <form> <input type="button" value="测试2--传递2个参数" onClick="JavaScript: needTwoPara('smallerpig','小小猪');"> </form> <form> <input type="button" value="测试3--传递3个参数" onClick="JavaScript: needTwoPara('smallerpig','小小猪','生命不息');"> </form> <form> <input type="button" value="测试4--传递4个参数" onClick="JavaScript: needTwoPara('smallerpig','小小猪','生命不息','学习不止');"> </form> </body></html> |
点击第一个按钮的返回结果:
|
1
2
3
4
5
6
7
|
我是个需要2个参数的函数您输入的参数的个数为:1第1个参数为:smallerpig以上是用arguments来获得参数下面用变量来获得参数:p1:smallerpigp2:undefined |
点击第二个按钮的返回结果:
|
1
2
3
4
5
6
7
8
|
我是个需要2个参数的函数您输入的参数的个数为:2第1个参数为:smallerpig第2个参数为:小小猪以上是用arguments来获得参数下面用变量来获得参数:p1:smallerpigp2:小小猪 |
点击第三个按钮的返回结果:
|
1
2
3
4
5
6
7
8
9
|
我是个需要2个参数的函数您输入的参数的个数为:3第1个参数为:smallerpig第2个参数为:小小猪第3个参数为:生命不息以上是用arguments来获得参数下面用变量来获得参数:p1:smallerpigp2:小小猪 |
点击第四个按钮的返回结果:
|
1
2
3
4
5
6
7
8
9
10
|
我是个需要2个参数的函数您输入的参数的个数为:4第1个参数为:smallerpig第2个参数为:小小猪第3个参数为:生命不息第4个参数为:学习不止以上是用arguments来获得参数下面用变量来获得参数:p1:smallerpigp2:小小猪 |
理解原因:
ECMAScript函数的参数与大多数其他语言中的函数的参数有所不同。ECMAScript函数不介意传递进来多少个参数,也不在乎穿进来参数是什么数据类型。也就是是说,即便你定义的函数值接受两个参数,在调用这个函数时也未必一定要是两个参数。可以传递一个、三个甚至不传递参数,而解析器永远不会有什么怨言。之所以会这样,原因是ECMAScript中的参数在内部是用一个数组来运行的。函数接受到的永远是这个数组,而不关心数组中包含哪些参数(如果有参数的话)。如果这个数组中不包含任何元素,无所谓;如果包含多个元素,也没问题。实际上,在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给含糊的每一个参数。
js函数定义参数个数和实际传入参数的对比的更多相关文章
- js函数定义 参数只要写名称就可以了
js函数定义 参数只要写名称就可以了 以下为标准: function add(type) { } 不要写成下面这个样子 function add(var type) { } 哎 妹的 老何ja ...
- js 函数定义的方式
js 函数定义的方式 一.总结 一句话总结: 最常见就下面三种 最常见:function func1([参数]){/*函数体*/} 将匿名函数赋值给变量:var func2=function([参数] ...
- js 函数定义三种方式
<p>Js 函数定义的三种方式:</p> <br> <p>方式一:function</p> <script type="te ...
- js加载事件和js函数定义
一 dom文档树加载完之后执行一个函数 在Dom加载完成后执行函数,下面这三个的作用是一样的,window.onload 是JavaScript的,window.onload是在dom文档树加载完和 ...
- js 函数定义的2种方式
js 函数定义的2种方式 CreateTime--2018年3月29日18:36:14 Author:Marydon 方式一: /** * 函数式声明 */ function mode() { c ...
- SpringCloud使用Feign调用其他客户端带参数的接口,传入参数为null或报错status 405 reading IndexService#del(Integer);
SpringCloud使用Feign调用其他客户端带参数的接口,传入参数为null或报错status 405 reading IndexService#del(Integer); 第一种方法: 如果你 ...
- js函数定义和调用
由于JavaScript的函数也是一个对象,上述定义的abs()函数实际上是一个函数对象,而函数名abs可以视为指向该函数的变量. var abs = function (x) { if (x > ...
- js函数定义方法
1.函数声明 其语法为 function functionName(){ //函数体 } 首先是function关键字,然后是函数名,其重要特征是函数声明提升,即在执行代码之前会先读取函数声明,使其在 ...
- JS函数定义与匿名函数的调用
一.函数声明.函数表达式.匿名函数 函数声明:function fnName () {…};使用function关键字 声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnName ...
随机推荐
- 实现RTSP摄像机进行网页直播和微信直播的技术方案:EasyNVR自动更新方法
问题背景: 1.EasyNVR的用户越来越多,技术人员一一对应解答效率不高: 2.随着EasyNVR应用场景的不断增加,以及EasyNVR自身在技术上的不断优化,版本更新比较快: 3.由于开发人力有限 ...
- php总结4——数组的定义及函数、冒泡排序
4.1 数组的定义 数组:变量存储的有序序列. 索引数组:下标为数字的数组. $数组名称(下标) 下标从0开始的数字. 直接定义: $arr[0]=123; $arr[1]="chi ...
- Java分支循环结构
一.Java分支结构 1.if语句:一个 if 语句包含一个布尔表达式和一条或多条语句. if 语句的用语法如下: if(布尔表达式){ 如果布尔表达式为true将执行的语句 } public c ...
- Java for LeetCode 118 Pascal's Triangle
Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5, Retu ...
- 1.2 Data Abstraction(算法 Algorithms 第4版)
1.2.1 package com.qiusongde; import edu.princeton.cs.algs4.Point2D; import edu.princeton.cs.algs4.St ...
- Struts2 小例子 --第二弹
struts-2.5.14.1-all.zip 下载后文件夹说明 apps:war格式的例子文件 lib:引用jar包文件 src:源码文件 docs:帮助文档 小例子: 1.创建web工程:str ...
- Linux_学习_01_常用命令大全
一.文件目录 1.列出目录 ls -a #显示隐藏文件 -l #显示文件和目录的详细资料 -h -lrt tree #显示文件和目录由根目录开始的树形结构 lstree #显示文件和目录由根目录开始的 ...
- L2-028 秀恩爱分得快(25 分)
古人云:秀恩爱,分得快. 互联网上每天都有大量人发布大量照片,我们通过分析这些照片,可以分析人与人之间的亲密度.如果一张照片上出现了 K 个人,这些人两两间的亲密度就被定义为 1/K.任意两个人如果同 ...
- bzoj 4278 Tasowanie 后缀数组+贪心
题目大意 给定两个数字串A和B,通过将A和B进行二路归并得到一个新的数字串T,请找到字典序最小的T.\(len \leq 200000\) 题解 我们从归并排序的角度去想,每次把两者之一较小的取出来 ...
- 洛谷P2530 [SHOI2001]化工厂装箱员
题目描述 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯度,A:100%,B:1%,C:0.01%,为了出售方便,必须把不 ...