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 ...
随机推荐
- TCP/UDP server
Simple: Sample TCP/UDP server https://msdn.microsoft.com/en-us/library/aa231754(v=vs.60).aspx Simple ...
- Tomcat学习笔记【2】--- Tomcat安装、环境变量配置、启动和关闭
本文主要讲Tomcat的安装和配置. 一 Tomcat安装 1.1 下载 下载地址:http://tomcat.apache.org/ 1.2 安装 Tomcat是不需要安装的,解压压缩包即可. 在安 ...
- NinjaFramework中文教程(简单版)-手把手教程-从零开始
第一步: 官网http://www.ninjaframework.org/documentation/getting_started/create_your_first_application.htm ...
- MySQL——sql语句的执行顺序
#核心知识点: 书写顺序:where——>group by——>having——>order by——>limit 许多时候在书写一些复杂的sql语句的时候,尤其是在渐进式推导 ...
- Java for LeetCode 104 Maximum Depth of Binary Tree
Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...
- 20145239杜文超 《Java程序设计》第8周学习总结
20145239 <Java程序设计>第8周学习总结 教材学习内容总结 通用API 日志API 1.java.util.logging包提供了日志功能相关类与接口,使用日志的起点是logg ...
- 51nod 1022 石子归并 V2 —— DP四边形不等式优化
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1022 1022 石子归并 V2 基准时间限制:1 秒 空间限 ...
- POJ3415 Common Substrings —— 后缀数组 + 单调栈 公共子串个数
题目链接:https://vjudge.net/problem/POJ-3415 Common Substrings Time Limit: 5000MS Memory Limit: 65536K ...
- 基于KD-Tree的最近邻搜索
目标:查询目标点附近的10个最近邻邻居. load fisheriris x = meas(:,:); figure(); g1=gscatter(x(:,),x(:,),species); %spe ...
- 存储过程之rowtype 使用
CREATE OR REPLACE PROCEDURE "DYLYLQX_SC_BA_1" (YWID IN VARCHAR2, FLAG OUT VARCHAR2) IS V_R ...