深入理解ECMAScript的函数参数

  ECMAScript函数的参数与大多数其他语言中函数的参数有所不同。ECMAScript函数不介意传递进来多少个参数,也不在乎传进来参数是什么数据类型。

一、ECMAScript传递给函数的参数与定义时的参数可以不一致
  原因是ECMAScript中的参数在内部是用一个数组表示的,函数接收到的始终都是这个数组,而不关心数组中包含哪些参数。如果这个数组中不包含任何元素,没有关系;如果包含多个元素,也没有问题。

二、通过arguments对象访问参数数组
  实际上,arguments对象只是与数组类似,它并不是Array的实例,可以使用方括号语法访问它的每一个元素,即第一个元素是arguments[0],第二个元素是arguments[1],以此类推,使用length属性来确定传递进来多少个参数。
一个实例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Test</title>
</head>
<body>
    <button onclick="func('rain','yan')">点我</button>
    <script>
        function func() {
            alert("Hello "+arguments[0]+","+arguments[1]);
        }
    </script>
</body>
</html>

这里写图片描述

三、arguments对象可以与命名参数一起使用
一个例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Test arguments</title>
</head>
<body>
    <button onclick="daAdd(12,14)">button1</button>
    <button onclick="daAdd(12)">button2</button>
    <script>
        function daAdd(num1,num2) {
            if(arguments.length == 1){
                alert(num1+10);
            } else if(arguments.length == 2) {
                alert(arguments[0] + arguments[1]);
            }
        }
    </script>
</body>
</html>

点击button1显示:
这里写图片描述

点击button2显示:
这里写图片描述

四、ECMAScript函数没有重载
  ECMAScript函数没有签名,因为其参数是由包含零个或多个值的数组表示的。而没有函数签名,ECMAScript函数不能重载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值