UDN-企业互联网技术人气社区

板块导航

浏览  : 622
回复  : 2

[原生js] js中参数不对应问题

[复制链接]
葡萄柚的头像 楼主
发表于 2017-2-5 10:26:30 | 显示全部楼层 |阅读模式
  因为js是一种弱类型的编程语言,对数据类型的要求没有其他编程语言的要求严格,所以在定义函数的时候不需要像java和C#一样对其传入参数的类型进行定义。那么传入参数的个数有没有影响呢?今天小猪就做了个实验。
  1. <html>
  2.   <head>
  3.     <title>
  4. 函数调用测试,参数个数和函数声明不一样多
  5.     </title>
  6.    
  7.     <script language="JavaScript">
  8.       function  needTwoPara(p1,p2){
  9.                 var a=arguments;
  10.                 var result='我是个需要2个参数的函数\n'
  11.                                      +'您输入的参数的个数为:'+a.length+'\n'
  12.                 for(var i=0, len = a.length; i <len; i++){
  13.                         result=result+'第'+(i+1)+'个参数为:'+a[i]+'\n'
  14.                     }
  15.                 result+='以上是用arguments来获得参数\n';
  16.                 result+='下面用变量来获得参数:\n';
  17.                 result+='p1:'+p1+'\n';
  18.                 result+='p2:'+p2+'\n';
  19.             alert(result);
  20.         }
  21.      </script>
  22.     </head>
  23.     <body>
  24.        <form>
  25.           <input type="button" value="测试1--传递1个参数"
  26.             onClick="JavaScript: needTwoPara('smallerpig');">
  27.        </form>
  28.        <form>
  29.           <input type="button" value="测试2--传递2个参数"
  30.             onClick="JavaScript: needTwoPara('smallerpig','小小猪');">
  31.        </form>
  32.        <form>
  33.           <input type="button" value="测试3--传递3个参数"
  34.             onClick="JavaScript: needTwoPara('smallerpig','小小猪','生命不息');">
  35.        </form>
  36.        <form>
  37.           <input type="button" value="测试4--传递4个参数"
  38.             onClick="JavaScript: needTwoPara('smallerpig','小小猪','生命不息','学习不止');">
  39.        </form>
  40.    
  41.     </body>
  42. </html>
复制代码

  点击第一个按钮的返回结果:
  1. 我是个需要2个参数的函数
  2. 您输入的参数的个数为:1
  3. 第1个参数为:smallerpig
  4. 以上是用arguments来获得参数
  5. 下面用变量来获得参数:
  6. p1:smallerpig
  7. p2:undefined
复制代码

  点击第二个按钮的返回结果:
  1. 我是个需要2个参数的函数
  2. 您输入的参数的个数为:2
  3. 第1个参数为:smallerpig
  4. 第2个参数为:小小猪
  5. 以上是用arguments来获得参数
  6. 下面用变量来获得参数:
  7. p1:smallerpig
  8. p2:小小猪
复制代码

  点击第三个按钮的返回结果:
  1. 我是个需要2个参数的函数
  2. 您输入的参数的个数为:3
  3. 第1个参数为:smallerpig
  4. 第2个参数为:小小猪
  5. 第3个参数为:生命不息
  6. 以上是用arguments来获得参数
  7. 下面用变量来获得参数:
  8. p1:smallerpig
  9. p2:小小猪
复制代码

  点击第四个按钮的返回结果:
  1. 我是个需要2个参数的函数
  2. 您输入的参数的个数为:4
  3. 第1个参数为:smallerpig
  4. 第2个参数为:小小猪
  5. 第3个参数为:生命不息
  6. 第4个参数为:学习不止
  7. 以上是用arguments来获得参数
  8. 下面用变量来获得参数:
  9. p1:smallerpig
  10. p2:小小猪
复制代码

  理解原因:

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

相关帖子

发表于 2017-2-5 10:27:01 来自手机 | 显示全部楼层
还是挺有借鉴意义的
使用道具 举报

回复

发表于 2017-2-7 00:59:11 | 显示全部楼层
LZ是闲人,天天发帖,坚定完毕
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部