博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js函数定义参数个数和实际传入参数的对比
阅读量:7238 次
发布时间:2019-06-29

本文共 2087 字,大约阅读时间需要 6 分钟。

因为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:smallerpig
p2:
undefined

点击第二个按钮的返回结果:

1
2
3
4
5
6
7
8
我是个需要
2
个参数的函数
您输入的参数的个数为:
2
1
个参数为:smallerpig
2
个参数为:小小猪
以上是用arguments来获得参数
下面用变量来获得参数:
p1:smallerpig
p2:小小猪

点击第三个按钮的返回结果:

1
2
3
4
5
6
7
8
9
我是个需要
2
个参数的函数
您输入的参数的个数为:
3
1
个参数为:smallerpig
2
个参数为:小小猪
3
个参数为:生命不息
以上是用arguments来获得参数
下面用变量来获得参数:
p1:smallerpig
p2:小小猪

点击第四个按钮的返回结果:

1
2
3
4
5
6
7
8
9
10
我是个需要
2
个参数的函数
您输入的参数的个数为:
4
1
个参数为:smallerpig
2
个参数为:小小猪
3
个参数为:生命不息
4
个参数为:学习不止
以上是用arguments来获得参数
下面用变量来获得参数:
p1:smallerpig
p2:小小猪

理解原因:

ECMAScript函数的参数与大多数其他语言中的函数的参数有所不同。ECMAScript函数不介意传递进来多少个参数,也不在乎穿进来参数是什么数据类型。也就是是说,即便你定义的函数值接受两个参数,在调用这个函数时也未必一定要是两个参数。可以传递一个、三个甚至不传递参数,而解析器永远不会有什么怨言。之所以会这样,原因是ECMAScript中的参数在内部是用一个数组来运行的。函数接受到的永远是这个数组,而不关心数组中包含哪些参数(如果有参数的话)。如果这个数组中不包含任何元素,无所谓;如果包含多个元素,也没问题。实际上,在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给含糊的每一个参数。

转载地址:http://wbwbm.baihongyu.com/

你可能感兴趣的文章
检查app的activity是否在当前
查看>>
html5 canvas全屏烟花动画特效
查看>>
MySQL使用SQL实现Oracle Rank函数功能
查看>>
博客搬家
查看>>
xin域名公仔2017版
查看>>
StickyListHeaders的使用
查看>>
云服务器ECS,你真的懂吗?
查看>>
ORA-2330 ORA-01403: no data found
查看>>
学习ssh之ssh密钥随身携带
查看>>
HBA详解(原创)
查看>>
java集合框架02——Collection架构与源码分析
查看>>
怎样检查svn启动没有
查看>>
理解Nodejs的Event Loop
查看>>
Html Table 合并单元格
查看>>
第七章_标签文件
查看>>
阿里巴巴CTO张建锋:大数据+计算+算法才是未来
查看>>
hibernate中一级缓存和二级缓存
查看>>
【转载】架构师的行为准则(一)
查看>>
RMI,RPC,SOAP对比分析
查看>>
json解析,异步下载(listview仅滑动时加载)Demo总结
查看>>