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

yizhihongxing

下面是深入理解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中的面向对象基础 JavaScript是一门面向对象的语言,可以使用类(class)和实例(instance)的概念来组织代码和数据,实现封装、继承和多态等面向对象的特性。在面向对象的编程中,我们通常会定义一个类,然后通过实例化该类,创建一个实例对象,再通过对象的属性和方法来处理数据、执行操作。下面是JS中定义Person类的示例代码…

    JavaScript 2023年5月27日
    00
  • VueJs单页应用实现微信网页授权及微信分享功能示例

    下面我来为你详细讲解“VueJs单页应用实现微信网页授权及微信分享功能示例”的完整攻略。 简介 微信网页授权和微信分享功能是开发微信公众号和小程序时常用的功能,本文将介绍如何在VueJS单页应用中实现这两个功能。 微信网页授权 在公众平台中注册一个微信公众号,并且在公众号设置中添加JS接口安全域名,否则无法使用微信JS-SDK功能。 在网页中引入微信JS-S…

    JavaScript 2023年6月11日
    00
  • 利用JS实现文字的聚合动画效果

    下面是“利用JS实现文字的聚合动画效果”的完整攻略: 1. 需求 我们需要实现一个文字聚合的动画效果,即文字以某种规律逐渐聚拢到一起,并最终形成一个整体。 2. 实现步骤 要实现这样的效果,我们可以按照以下步骤进行: 2.1. 准备工作 首先,我们需要一些基础的HTML和CSS来构造页面,同时需要引入动画所需的JS文件,例如TweenMax或Anime.js…

    JavaScript 2023年6月10日
    00
  • 常常会用到的截取字符串substr()、substring()、slice()方法详解

    下面是关于常用的字符串截取方法 substr()、substring()、slice() 的详细讲解。 substr() 方法 substr() 方法用于截取一个字符串的部分内容,它接收两个参数,第一个参数是截取的起始位置,第二个参数是需要截取的字符个数。当第二个参数缺省时,则表示截取到字符串末尾。下面是一个例子: const str = "hel…

    JavaScript 2023年5月28日
    00
  • JS 新增Cookie 取cookie值 删除cookie 举例详解

    JS 新增 Cookie 在 JavaScript 中新增 Cookie 非常简单,只需要设置 document.cookie 属性即可。 document.cookie = "key=value"; 其中,key 表示 Cookie 的键值,value 表示 Cookie 的值。如果需要设置多个 Cookie,可以使用分号(;)隔开。 …

    JavaScript 2023年6月11日
    00
  • JavaScript学习教程之cookie与webstorage

    JavaScript学习教程之cookie与webstorage 在前端开发中,我们常常需要在网站中存储一些信息,以便下次用户访问时直接使用,这就需要用到cookie和webstorage。本文将详细讲解cookie和webstorage的概念、用法、区别以及示例。 1. Cookie 什么是Cookie? Cookie是一种小型的文本文件,它可以在客户端存…

    JavaScript 2023年6月11日
    00
  • 如jQuery般易用的api风格代码分享

    如jQuery般易用的API风格的代码分享,通常是指通过简洁易读的API接口、规范明确的代码结构、充分考虑可扩展性和兼容性等方式,让其他开发者能够简单、快速地使用你的代码,从而提高软件开发的效率。 下面是一些实现这种代码分享的建议: 1. 使用常用的API方法和命名规范 为了让你的API接口和代码逻辑更加易读和易懂,建议尽可能使用常见的API方法和命名规范。…

    JavaScript 2023年5月19日
    00
  • html数组字符串拼接的最快方法

    HTML数组字符串拼接是Web开发中的常见任务。优化此过程可提高网页性能,提高页面响应能力和用户体验。在本文中,我将重点介绍针对HTML数组字符串拼接的最佳实践和方法。 方法一:使用模板字符串 ES6引入的模板字符串可以使用${}实现字符串替换,简化了字符串拼接的操作,同时提高了性能和代码的可读性。在HTML数组字符串拼接中,使用模板字符串可以有效地减少代码…

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