Javascript中的arguments对象

Javascript中的arguments对象

在Javascript中,函数参数可以通过arguments对象访问。这个对象是一个类数组对象,包含了函数调用时所有传入的实参,可以用来访问函数调用时没有在形参列表中声明的参数。

arguments对象的基本用法

arguments对象有如下属性和方法:

属性

  • callee: 返回当前正在执行的函数的引用,一般用途较少。
  • length: 表示传递给函数的参数的个数。注意,该属性是命名参数和不命名参数的总和,而与函数定义时声明的参数的个数无关。

方法

  • arguments[i]:获取传递给函数的第i个参数。
  • arguments.length:获取传递给函数的参数数量。

Function的apply和call方法可以用来调用函数时改变函数的上下文对象,同时还可以动态给函数传递参数,如:

function add(x, y){
    return x + y;
}

console.log(add.apply(null, [1, 2])); // 输出 3
console.log(add.call(null, 1, 2));    // 输出 3

示例一: 不定参数求和

function sum(){
    var total = 0;
    for(var i = 0; i < arguments.length; i++){
        total += arguments[i];
    }
    return total;
}

console.log(sum(1, 2, 3, 4));    // 输出 10
console.log(sum(1, 2));          // 输出 3
console.log(sum(4));             // 输出 4
console.log(sum());              // 输出 0

在这个例子中,sum函数并没有声明形参,通过访问arguments对象获取函数调用时所有传入的实参,然后进行求和。

示例二:获取传参默认值

function foo(a, b, c){
    a = a || 1;
    b = b || 2;
    c = c || 3;
    return a + b + c;
}

console.log(foo());         // 输出 6
console.log(foo(7));        // 输出 12
console.log(foo(7, 8));     // 输出 18
console.log(foo(7, 8, 9));  // 输出 24

在这个例子中,foo函数有三个参数,但是函数可能被调用时没有传入任何实参,所以需要给参数初始化默认值。当参数没有传入时,||运算符会将其视为假值,因此可以用a = a || 1的方式保证a参数有默认值1。同样地,bc的默认值分别为23。可以看到,在不同的调用情况下,arguments对象中包含的实参数量是不同的,但是函数能够通过不定数量的实参来获取并设定默认值。

总结

arguments对象是Javascript函数中的一个非常强大的工具,可以动态获取传入的实参,可以方便地处理没有命名的实参,也可以实现不定数量实参的传递。但是,过度使用arguments对象可能会让代码变得难以理解和维护,因此需要谨慎使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Javascript中的arguments对象 - Python技术站

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

相关文章

  • jacascript DOM节点——元素节点、属性节点、文本节点

    JavaScript DOM节点是文档对象模型(DOM)中的基本要素之一,它们可以作为网页中的任意元素的表示。DOM节点可以分为三种主要类型:元素节点、属性节点、文本节点。本文将详细讲解这三种节点类型的定义、区别以及使用方法。 元素节点 元素节点是DOM树结构中的基本节点,它表示HTML文档中的元素。可以通过document.getElementByTagN…

    JavaScript 2023年6月10日
    00
  • react-router-dom v6 使用详细示例

    这里给出使用 React-Router-Dom 版本 6.x 的详细攻略,包含基本概念、用法介绍、代码示例等,方便大家快速上手。 基本概念 React-Router-Dom 是一个 React 的声明式路由库,在 React 应用中使用路由的时候非常方便。在使用 React-Router-Dom 时,主要涉及到以下几个核心概念: Router:定义路由的容器…

    JavaScript 2023年6月11日
    00
  • javascript从image转换为base64位编码的String

    下面是JavaScript将Image转换为Base64位编码的字符串的完整攻略: 一、背景介绍 在JavaScript中,将图片转换为Base64编码的字符串可以非常方便地实现图片预加载、图片上传、图片存储等多种功能,而不必通过服务器进行处理。 二、步骤说明 创建一个Image对象 var img = new Image(); 指定Image对象的src属…

    JavaScript 2023年5月19日
    00
  • 用js计算页面执行时间的函数

    首先,在计算页面执行时间之前,需要先记录页面开始加载的时间和页面加载完成的时间。我们可以使用window对象的performance属性来实现。 页面开始加载的时间: const loadStartTime = window.performance.timing.navigationStart; 页面加载完成的时间: window.onload = func…

    JavaScript 2023年5月27日
    00
  • JS数组的遍历方式for循环与for…in

    JS数组是常用的数据类型之一,数组中存放着一系列的元素,我们通过数组索引来访问这些元素。JS数组的遍历方式有许多,其中包括for循环和for…in两种方式。 for循环 for循环是JS中最常用的循环语句,用于对数组的元素进行遍历操作。for循环的语法格式如下: for (let i = 0; i < arr.length; i++) { // d…

    JavaScript 2023年5月27日
    00
  • JavaScript笛卡尔积超简单实现算法示例

    JavaScript笛卡尔积超简单实现算法示例:完整攻略 什么是笛卡尔积 笛卡尔积是组合数学中的一种运算,指的是将两个集合看作是笛卡尔坐标系上的两个维度,然后将它们组合在一起,形成一个新的集合的所有可能的组合。 举个例子,假设集合A={1, 2},集合B={x, y},它们的笛卡尔积就是{(1, x), (1, y), (2, x), (2, y)}。 在编…

    JavaScript 2023年5月28日
    00
  • 区分中英文字符的两种方法(正则和charCodeAt())

    区分中英文字符是一个十分常见的需求,下面我将介绍两种常用的方法,分别是正则表达式和charCodeAt()方法。 使用正则表达式 匹配单个中文字符 要匹配单个中文字符,我们需要使用Unicode中文编码范围来进行匹配,中文字符的Unicode编码范围为\u4e00-\u9fa5。因此,我们可以使用如下的正则表达式: /^[\u4e00-\u9fa5]$/ 这…

    JavaScript 2023年6月10日
    00
  • window.parent与window.openner区别介绍

    window.parent与window.opener区别介绍 在网页中经常出现需要进行页面跳转的情况,比如新窗口打开链接,或者在iframe中嵌入其他网页。在JavaScript中有两个常用的属性可用于控制页面跳转:window.parent和window.opener。在本文中,将详细介绍这两个属性的区别以及其应用场景。 window.parent wi…

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