深入理解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日

相关文章

  • arcgis js完整悬停效果实现demo

    悬停效果实现原理 在实现悬停效果之前,我们需要先了解一下悬停效果的原理。悬停效果可以通过两种方式来实现,即CSS方式和JavaScript方式。其中,CSS方式仅能实现简单的悬停效果,而JavaScript方式能实现复杂的个性化悬停效果。 在arcgis js中,我们使用JavaScript方式来实现悬停效果。具体实现步骤如下: (1)通过添加事件监听器(如…

    JavaScript 2023年6月11日
    00
  • asp.net后台cs中的JSON格式变量在前台Js中调用方法(前后台示例代码)

    在asp.net中,可以通过后台cs文件生成JSON格式的数据,然后在前台的JavaScript代码中调用这些数据。下面是实现该功能的具体步骤: 1. 在后台cs文件中生成JSON格式数据 我们可以使用C#的JsonObject类来生成JSON格式的数据。示例代码如下: using System.Web.Script.Serialization; // 创建…

    JavaScript 2023年5月27日
    00
  • JavaScript中对象property的读取和写入方法介绍

    下面我就来为你详细讲解“JavaScript中对象property的读取和写入方法介绍”。 什么是对象property 在JavaScript中,对象是一种基本类型,它由key-value键值对组成。对象的属性可以是任意的JavaScript值,例如数字、布尔值、字符串、函数、甚至可以是另一个对象。在JavaScript中,我们使用点(.)或方括号([])访…

    JavaScript 2023年5月27日
    00
  • BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑

    Bootstrap是一款常用的前端开发框架,封装了很多常用的功能组件,如表单验证功能。但是在使用Bootstrap的表单验证组件时,我们可能会遭遇一些坑,其中比较典型的就是非Submit类型按钮点击时不能触发表单验证的问题。 下面是解决这个问题的攻略步骤: 步骤1:为非Submit类型按钮添加点击事件 首先,我们需要为非Submit类型按钮添加点击事件。在这…

    JavaScript 2023年6月10日
    00
  • JavaScript常用字符串与数组扩展函数小结

    JavaScript是一门强大的语言,它提供了大量的内置函数,其中包括对字符串和数组的操作。除此之外,还有很多扩展函数可以用于处理字符串和数组。 本文将对常用的JavaScript字符串和数组扩展函数做一个小结。 JavaScript字符串扩展函数 1. startsWith() startsWith()方法用于判断一个字符串是否以指定的字符串开头。如果是,…

    JavaScript 2023年5月27日
    00
  • 详解Element-UI中上传的文件前端处理

    下面就是详解 “Element-UI中上传的文件前端处理” 的完整攻略。 一、前言 Element-UI 是饿了么前端团队开发并开源的一款基于 Vue.js 2.0 的 UI 组件库,拥有非常丰富的组件和样式,其中包含了上传文件的组件。然而,如果我们需要自定义上传文件前的处理流程,怎么做呢?本文将详细介绍 Element-UI 中上传文件前端处理的方法。 二…

    JavaScript 2023年6月10日
    00
  • 微信小程序wx.request的简单封装

    我可以为您提供“微信小程序wx.request的简单封装”的完整攻略。请注意,由于涉及到代码以及markdown格式,我将使用代码块展示相关示例。 1. 简介 在微信小程序中,通过 wx.request 可以发送网络请求。但使用 wx.request 还需要处理错误、重试等问题。因此,封装 wx.request 可以更方便地处理网络请求相关的问题。 2. 封…

    JavaScript 2023年5月27日
    00
  • Javascript笔记一 js以及json基础使用说明

    Javascript笔记一 js以及json基础使用说明 一、Javascript基础 1.1 基本语法 Javascript是一种动态解释性语言,用于为Web应用程序提供交互性和动态性。 以下是Javascript的基本语法: // 在Javascript中, // 之后的所有内容都是注释 /* 多行注释 可以使用这种形式 */ // 定义变量 var x…

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