js函数调⽤带参数和不带参数的区别
如果调⽤的函数不⽤参数实现什么功能,可以直接调⽤func(),不⽤带参数;
因为js是⼀种弱类型的,对数据类型的要求没有的要求严格,所以在定义函数的时候不需要像java和c#⼀样对其传⼊参数的类型进⾏定义。那么传⼊参数的个数有没有影响呢?今天⼩猪就做了个实验。
<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>
点击第⼀个按钮的返回结果:
我是个需要2个参数的函数
您输⼊的参数的个数为:1
第1个参数为:smallerpig
以上是⽤arguments来获得参数
下⾯⽤变量来获得参数:
p1:smallerpig
p2:undefined
点击第⼆个按钮的返回结果:
我是个需要2个参数的函数
您输⼊的参数的个数为:2
第1个参数为:smallerpig
第2个参数为:⼩⼩猪
以上是⽤arguments来获得参数
下⾯⽤变量来获得参数:
p1:smallerpig
p2:⼩⼩猪
点击第三个按钮的返回结果:
我是个需要2个参数的函数
您输⼊的参数的个数为:3
第1个参数为:smallerpig
第2个参数为:⼩⼩猪
第3个参数为:⽣命不息
以上是⽤arguments来获得参数
下⾯⽤变量来获得参数:
p1:smallerpig
p2:⼩⼩猪
点击第四个按钮的返回结果:
js arguments我是个需要2个参数的函数
您输⼊的参数的个数为:4
第1个参数为:smallerpig
第2个参数为:⼩⼩猪
第3个参数为:⽣命不息
第4个参数为:学习不⽌
以上是⽤arguments来获得参数
下⾯⽤变量来获得参数:
p1:smallerpig
p2:⼩⼩猪
理解原因:
js函数的参数与⼤多数其他语⾔中的函数的参数有所不同。js函数不介意传递进来多少个
参数,也不在乎穿进来参数是什么数据类型。也就是是说,即便你定义的函数值接受两个参数,在调⽤这个函数时也未必⼀定要是两个参数。可以传递⼀个、三个甚⾄不传递参数,⽽解析器永远不会有什么怨⾔。之所以会这样,原因是js中的参数在内部是⽤⼀个数组来运⾏的。函数接受到的永远是这个数组,⽽不关⼼数组中包含哪些参数(如果有参数的话)。如果这个数组中不包含任何元素,⽆所谓;如果包含多个元素,也没问题。实际上,在内可以通过arguments对象来访问这个参数数组,从⽽获取传递给含糊的每⼀个参数。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论