<!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. windows运行xcopy计划任务 结果是0x4解决方案

    近几天发现一直好好的数据备份计划任务一直返回0x4失败,直接执行bat又是正常的. bat命令中使用的是xcopy,到处找方案没解决. 今天意外在使用另一个命令时,发现提示:网络连接数据超过最大值. ...

  2. ALBERT论文简读

    问题描述 预训练自然语言表征时,增加模型的参数量通常可以是模型在下有任务中性能提升.但是这种做法对硬件设备的要求较高(当下的各种SOTA模型动辄数亿甚至数十亿个参数,倘若要扩大模型规模,这个内存问题是 ...

  3. 写出干净的 JavaScript 5 个小技巧

    携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第15天,点击查看活动详情 降低阅读负担,启发创作心智,轻松学习 JavaScript 技巧,日拱一卒,jym,冲~ 1. 将数字定 ...

  4. WDA学习(26):Phase Indicator使用

    1.19 UI Element:Phase Indicator使用 本实例测试创建Phase Indicator; 运行结果: 1.创建Component,View: V_PHASE_IND; 2.创 ...

  5. errgroup.Group

    在一组 Goroutine 中提供了同步.错误传播以及上下文取消的功能,我们可以使用如下所示的方式并行获取网页的数据: package main import ( "fmt" &q ...

  6. ubuntu fastdds安装

    0,虚拟机安装: 推荐安装ubuntu 20.ubuntu 22与VMware不兼容,存在无法与主机之间复制粘贴文件的问题. 1.虚拟机镜像下载,下载tdesktop版本: 中科大站点:https:/ ...

  7. Timer VS DispatcherTimer

    Timer是在ThreadPool线程池中执行的,每当计时器到期时,就会创建一个线程来执行事件处理程序.这种实现方式可能会导致一些问题,例如计时器事件处理程序可能会与主线程竞争资源,从而导致性能问题. ...

  8. 无需联网,一键永久激活所有Windows/Office

    对于 Windows 激活工具,大家可能了解不多,熟悉的比如小马激活工具,因为激活工具从来都是病毒高发区,各种工具混在一起,一不小心,电脑就中招了. 今天介绍一款不一样的. R@1n ReBirth ...

  9. 【java数据结构与算法】直接戳中"希尔排序"要点,学不会你打我~

    希尔排序: 也叫增量递减排序 是插入排序的优化,分组+排序 Get到重点,那么我们开剖析一下 结合图表和代码,总结如下~public class ShellSort { public static v ...

  10. Laravel 5.1 LTS 速查表

    https://cs.laravel-china.org/# Artisan // 在版本 5.1.11 新添加,见 http://d.laravel-china.org/docs/5.1/autho ...