<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="../unitl/test.js"></script>
<style>
#results li.pass {color:green;}
#results li.fail {color:red;}
</style>
</head>
<body>
<ul id="results"></ul>
</body>
<script> //声明一个函数,具有3个形参:a,b,c
function whatever(a,b,c) { //值的准确性检验
assert(a===1,"The value of a is 1");
assert(b===2,"The value of b is 2");
assert(c===3,"The value of c is 3"); //共传入5个实参。
assert(arguments.length ===5,"We've passed in 5 parameters"); //验证传入的签3个实参与函数的3个形参匹配
assert(arguments[0]===a,"The first arguments is assigned to a");
assert(arguments[1] ===b, "The second argument is assigned to b");
assert(arguments[2]===c,"The third argument is assigned to c"); //验证额外的参数可以通过参数arguments获取。
assert(arguments[3]===4,"We can access the fourth argument");
assert(arguments[4]===5 ,"We can access the fifth argument"); } //调用函数时闯入5个参数
whatever(1,2,3,4,5); </script>
</html>

即时这里的whatever函数只定义了3个形参,但在调用的时候传入了5个参数;whatever(1,2,3,4,5);

      function whatever(a,b,c) {
...
}

我们可以通过对应的函数参数a,b和c访问到前3个参数的值;

      assert(a===1,"The value of a is 1");
assert(b===2,"The value of b is 2");
assert(c===3,"The value of c is 3");

我们还可以使用arguments.length属性来获取传递给函数的实际参数的个数。

通过数组下标的方式还可以访问到arguments参数的每个参数值。值得注意的是,这个也包括没有和函数形参相关联的剩余参数。

        assert(arguments[0]===a,"The first arguments is assigned to a");
assert(arguments[1] ===b, "The second argument is assigned to b");
assert(arguments[2]===c,"The third argument is assigned to c"); assert(arguments[3]===4,"We can access the fourth argument");
assert(arguments[4]===5 ,"We can access the fifth argument");

arguments不是一个一个数组。你可能会被它的用法误导,毕竟他有length属性,而却可以通过数组下标的方式访问到每个元素。但它并非JavaScript数组,如果你尝试在arguments对象上使用数组的方法

如(sort方法),会发现最终会报错。arguments对象仅仅是一个类数组的结构,在使用中要尤为注意。

理解函数调用_使用argument参数的更多相关文章

  1. 理解spread运算符与rest参数

    理解spread运算符与rest参数 spread运算符与rest参数 是ES6的新语法.它们的作用是什么?能做什么事情? 1. rest运算符用于获取函数调用时传入的参数. function tes ...

  2. 理解 Linux backlog/somaxconn 内核参数

    https://jaminzhang.github.io/linux/understand-Linux-backlog-and-somaxconn-kernel-arguments/ 各参数的含义:h ...

  3. 从IL角度彻底理解回调_委托_指针

    从IL角度彻底理解回调_委托_指针 目录 从IL角度彻底理解回调_委托_指针 1.创作此文的背景 1.1.委托能帮助代码更好地封装 1.2.委托能随时随地更方便地运行其他类中的方法 1.3.委托非常适 ...

  4. 如何理解javaSript中函数的参数是按值传递

    本文是我基于红宝书<Javascript高级程序设计>中的第四章,4.1.3传递参数小节P70,进一步理解javaSript中函数的参数,当传递的参数是对象时的传递方式. (结合资料的个人 ...

  5. java 重写你可以这么理解 因为 方法名和参数类型个数相同 所以这就是重写了 然后 因为是重写 所以 返回值必须相同

    java  重写你可以这么理解    因为   方法名和参数类型个数相同  所以这就是重写了    然后  因为是重写  所以  返回值必须相同

  6. 深入理解python中函数传递参数是值传递还是引用传递

    深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是"传对象引用 ...

  7. 理解 Python 中的可变参数 *args 和 **kwargs:

    默认参数:  Python是支持可变参数的,最简单的方法莫过于使用默认参数,例如: def getSum(x,y=5): print "x:", x print "y:& ...

  8. Python基本语法_函数属性 & 参数类型 & 偏函数的应用

    目录 目录 前言 软件环境 Python Module的程序入口 函数的属性 Python函数的创建 函数的参数 必备参数 缺省参数 命名参数 不定长参数 匿名参数 偏函数的应用 前言 Python除 ...

  9. 通过反汇编理解函数调用机制(x86和ARM)

    如下,一个简单的程序 #include <stdio.h> int add(int a, int b) { return a + b; } void main() { , b = ; in ...

  10. 深入理解JVM—Java 6 JVM参数配置说明

    原文地址:http://yhjhappy234.blog.163.com/blog/static/316328322011119111014657/ 使用说明< xmlnamespace pre ...

随机推荐

  1. class和struct区别

    类(class) 引用类型:将一个对象赋值给另一个对象时,系统不会对此对象进行拷贝,而会将指向这个对象的指针赋值给另一个对象,当修改其中一个对象的值时,另一个对象的值会随之改变. 结构体(struct ...

  2. windows10默认的EDGE浏览器进行切换窗口的操作修改

    Windows 10 修改 Alt+Tab 键 切换 新版 Microsoft Edge 单个标签页/窗口 解决方案:在 Windows 设置 的搜索框中 搜索 alt,选择 选择按下 Alt+Tab ...

  3. pg9.6查询优化

    目录 1 样例数据集 2 explain基础 3 执行计划节点结构 3.1 基本代价计算 3.2 执行计划格式输出 4 组装行集合 4.1 扫描方式 4.2 处理节点 1 样例数据集 wget htt ...

  4. OS-lab5

    OS-lab5 磁盘管理 完成文件系统的第一步就是要能够处理磁盘等外设的信息. lib/syscall_all.c 处理磁盘的信息,最基本的就是对磁盘进行读写操作. sys_write_dev函数用于 ...

  5. TCP三次握手四次挥手内容及步骤

    TCP特性 1.工作在传输层 2.面向连接的协议 3.全双工协议 4.半关闭 5.错误检查 6.将数据打包成段,排序 7.确认机制 8.数据恢复.重传 9.流量控制.滑动窗口 10.拥塞控制,慢启动和 ...

  6. Java基础学习:11、断点调试

    1.可以用来查看错误以及查看代码的运行过程. 2.如何使用:

  7. 由于CVE-2020-10770漏洞,k8s集群升级keycloak 8.0.0-->15.0.0(由于15.0.0最近又出安全漏洞,升级为16.0.0)

    背景 前段时间项目组用到的8.0.0版本的keycloak被安全部门同事扫出来一个中危漏洞: A flaw was found in Keycloak, where it is possible to ...

  8. (03-14) synopsys中工具介绍,VCS,DC,PT等

    https://blog.csdn.net/fangxiangeng/article/details/80981536 (1)Nlint 检查,spyglass (2)PT 静态时序检查 (3)Icc ...

  9. 4口高速USB 2.0 HUB控制器 DPU1.1S,兼容替代FE1.1S

    DPU1.1S是一款高性能.低功耗 4 口高速 USB2.0HUB 控制器,上行端口兼容高速 480MHz和全速 12MHz 两种模式,4个下行端口兼容高速480MHz.全速12MHz.低速 1.5M ...

  10. Antlr语法优化过程记录

    背景 Modelica Spec中的语法文件在Antlr下表现很糟糕,至少是1个数量级的糟糕的性能表现 理论 语义谓词减慢速度 ATN图中多分支转换为单分支 可选放在词法开头和语法的结尾 避免前导可选 ...