深入理解JS函数的参数(arguments)的使用

下面是深入理解JS函数参数(arguments)的使用攻略。

1. 什么是JS函数参数(arguments)?

在JS函数中,我们可以使用参数(argument)来接收外部传入的数据,这些参数被封装在一个类数组对象arguments中。arguments是代表传入函数的参数的对象,可以通过它访问函数的形参和实参。

2. arguments对象方法

arguments对象是一个类数组对象,提供了许多方法如下:

2.1 arguments.length

arguments对象的length属性即为传入参数的个数(不是函数形参的个数),我们可以利用arguments.length对函数进行重载,不同的参数个数可执行不同的代码块。

function fn(){
  if(arguments.length === 0){
    console.log("该函数不需要参数");
  } else if(arguments.length === 1){
    console.log("该函数需要一个参数");
  } else {
    console.log("该函数需要两个或以上的参数");
  }
}
fn(); // 该函数不需要参数
fn("Hello"); // 该函数需要一个参数
fn("Hello", "World"); // 该函数需要两个或以上的参数

2.2 arguments[n]

arguments对象还可以通过索引访问每一个实参。通过arguments[n]可以访问函数的第n个参数(n从0开始),如果该参数未传入,则其值为undefined。

function fn(p1, p2){
  console.log(arguments[0]); // 输出1
  console.log(arguments[1]); // 输出2
  console.log(arguments[2]); // 输出undefined
}
fn(1, 2);

2.3 arguments.callee()

利用arguments.callee,函数内部可以递归调用自身,即我们可以在没有函数名的情况下调用自身。

var countDown = function(num){
  if(num < 0){
    return;
  }
  console.log(num);
  num--;
  arguments.callee(num);
};
countDown(5); // 5 4 3 2 1 0

2.4 arguments.caller

arguments.caller可以用于获取当前函数的调用栈。

function a(){
  console.log("a函数的调用者是:" + arguments.callee.caller.name);
}
function b(){
  a();
}
b();

3. arguments与形参的区别

我们使用函数时有形参,在传递参数时直接将参数传入形参中,而arguments对象则是存储尚未通过形参赋值的参数的对象,它们在JS中存在本质上的区别。

4. 示例

  1. 计算任意个数的和。
function sum(){
  var total = 0;
  for(var i = 0;i < arguments.length;i++){
    if(typeof arguments[i] == "number"){
      total += arguments[i];
    }
  }
  return total;
}
console.log(sum(1,2,3,4,5)); // 15
  1. 求任意个数的参数中最小值。
function min(){
  var result = arguments[0];
  for(var i = 1;i < arguments.length;i++){
    if(arguments[i]< result){
      result = arguments[i];
    }
  }
  return result;
}
console.log(min(-1, 0, 1, 2, 3, 4)); // -1

以上就是深入理解JS函数的参数(arguments)的使用的攻略,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入理解JS函数的参数(arguments)的使用 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 原生JS实现前端本地文件上传

    当我们需要在前端实现文件上传的功能时,可以使用原生的JavaScript代码来实现。下面是一个完整的攻略,包含了前端上传文件需要用到的一些知识点。 1. 获取文件上传的节点 要上传文件,需要在页面上放置一个文件上传的节点,通常使用HTML中的<input type=”file” />元素。获取节点的方式可以使用原生JavaScript中的 get…

    JavaScript 2023年5月27日
    00
  • JS 自动安装exe程序

    JS 自动安装 exe 程序是一种自动安装程序的方法,主要用于后台自动安装某些特定的软件或工具。这种方法主要依赖于 JavaScript 的特性,在浏览器中实现自动下载和安装 exe 程序。 下面是 JS 自动安装 exe 程序的完整攻略: 安装准备 确认要安装的 exe 程序是否可以通过 JS 自动安装; 准备一个可以直接下载 exe 程序的链接(可以是百…

    JavaScript 2023年5月27日
    00
  • JavaScript中作用域链的概念及用途讲解

    作用域链的概念及用途讲解 在 JavaScript 中,每个函数都拥有自己的作用域(scope),也就是变量和函数的可访问范围。当函数在执行的时候,会先在自己的作用域中查找变量和函数,如果找不到,就会沿着作用域链向上逐级查找,直到找到为止。 作用域链的概念是指多个嵌套的作用域形成的查找链,它的顶端是全局作用域,底端是当前函数的作用域。 作用域链的主要作用是为…

    JavaScript 2023年6月10日
    00
  • 实例解析Array和String方法

    实例解析Array和String方法 在 JavaScript 开发中,使用 Array 和 String 是非常常见的。为了更好的掌握这两个数据类型,了解其方法使用是非常必要的。本文将会讲解 Array 和 String 常用的方法以及使用示例。 Array方法 push 语法:arrayObject.push(newelement1,newelement…

    JavaScript 2023年6月10日
    00
  • elementUI select组件value值注意事项详解

    下面我就为大家详细介绍一下关于 ElementUI Select 组件 value 值的注意事项。 问题出现情况 在使用 ElementUI Select 组件的时候,由于其拥有多种选择模式,可能会出现一些 value 值的问题。当我们使用可搜索的 select 时,会发现在搜索后选中某个选项后,value 值并不是我们所想要的值,而是一个对应着索引的数值。…

    JavaScript 2023年6月10日
    00
  • javascript闭包传参和事件的循环绑定示例探讨

    JavaScript闭包传参和事件的循环绑定示例探讨 本文将深入探讨JavaScript中闭包传参和事件的循环绑定问题,包括闭包的概念及传参方式、事件的循环绑定方式,以及两个实例。 1. 闭包 1.1 闭包的概念 实际上闭包是一种函数,它可以访问其它函数内层变量的函数,同时保留这些变量的值。简单地说,闭包就是一个能够读取其他函数内部变量的函数。 1.2 闭包…

    JavaScript 2023年6月10日
    00
  • JS运动特效之完美运动框架实例分析

    下面是详细讲解完美运动框架实例分析的攻略: JS运动特效之完美运动框架实例分析 一、简介 完美运动框架是一款优秀的JS运动特效库,可以实现多种运动效果,如匀速运动、缓冲运动等等。本篇文章将从实例分析的角度出发,介绍完美运动框架的常规用法以及一些细节问题。 二、常规用法 1. 引入完美运动框架 完美运动框架是一个单独的JS文件,需要在HTML文件中引入才能使用…

    JavaScript 2023年6月11日
    00
  • 12个常用的js正则表达式

    12个常用的JS正则表达式 正则表达式是一种用于匹配文本中特定模式的工具,它在JS编程中使用广泛。本文列举了12个常用的JS正则表达式及其用法。 验证用户名 const regex = /^[a-zA-Z][a-zA-Z0-9_]{4,15}$/; 该正则表达式用于验证用户名是否合法,用户名应包含5-16位字符,必须以字母开头,后面可跟字母、数字或下划线。 …

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部