Javascript中arguments对象的详解与使用方法

yizhihongxing

Javascript中arguments对象的详解与使用方法

什么是arguments对象

arguments是一个函数的内置对象,它表示函数在调用时传入的所有参数,即使函数在定义时没有声明任何参数也可以使用。该对象会在每次函数调用时自动创建。

举个例子:

function foo() {
  console.log(arguments);
}

foo(1, 'hello', [1, 2, 3]); // 打印出: { '0': 1, '1': 'hello', '2': [1, 2, 3] }

使用arguments对象

arguments对象主要有以下几种用途:

1. 获取函数调用时的参数个数

使用arguments.length来获取函数调用时传入的参数个数。

function foo() {
  console.log(arguments.length);
}

foo(); // 打印出:0
foo(1); // 打印出:1
foo(1, 2, 3); // 打印出:3

2. 获取函数调用时的参数值

像数组一样使用arguments对象,可以获取函数调用时传入的参数值。

function foo() {
  console.log(arguments[0]);
  console.log(arguments[1]);
  console.log(arguments[2]);
}

foo(1, 'hello', [1, 2, 3]); // 分别打印出:1,'hello',[1, 2, 3]

3. 判断函数参数的类型和个数

当函数在定义时没有指定参数个数或参数类型时,可以使用arguments对象来判断传入的参数是否符合要求。

function foo() {
  if (arguments.length !== 2) {
    throw new Error('Invalid arguments');
  }
  if (typeof arguments[0] !== 'string' || typeof arguments[1] !== 'number') {
    throw new Error('Invalid argument types');
  }
  console.log(`name: ${arguments[0]}, age: ${arguments[1]}`);
}

foo('John', 25); // 打印出:name: John, age: 25
foo(25, 'John'); // 抛出错误:Invalid argument types
foo('John'); // 抛出错误:Invalid arguments

4. 实现函数重载

JavaScript中函数没有函数重载(overload)的概念,可以使用arguments对象来模拟实现函数重载。

下面是一个简单的实现:

function foo() {
  if (arguments.length === 1 && typeof arguments[0] === 'string') {
    console.log(arguments[0].toUpperCase());
  } else if (arguments.length === 2 && typeof arguments[0] === 'number' && typeof arguments[1] === 'number') {
    console.log(arguments[0] + arguments[1]);
  } else {
    throw new Error('Invalid arguments');
  }
}

foo('hello'); // 打印出:HELLO
foo(1, 2); // 打印出:3
foo('hello', 'world'); // 抛出错误:Invalid arguments

示例

示例一:求和函数

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

console.log(sum(1, 2, 3)); // 打印出:6
console.log(sum(10, 20)); // 打印出:30
console.log(sum(1)); // 打印出:1

示例二:查询最大值函数

function findMax() {
  let max = Number.MIN_VALUE;
  for (let i = 0; i < arguments.length; i++) {
    if (arguments[i] > max) {
      max = arguments[i];
    }
  }
  return max;
}

console.log(findMax(1, 10, 3, 5, 8)); // 打印出:10
console.log(findMax(-1, -10, -3, -5, -8)); // 打印出:-1
console.log(findMax(1)); // 打印出:1

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

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

相关文章

  • JS前向后瞻正则表达式定义与用法示例

    下面是JS前向后瞻正则表达式定义与用法示例的完整攻略: 定义 正则表达式是指一些用来匹配和处理文本的模式,前向后瞻正则表达式(Lookahead)是其中的一种类型。它是一种零宽度断言模式,它用于匹配紧接着某个子表达式(即“前提条件”)的位置,而不匹配该子表达式本身。 前向后瞻正则表达式由(?=或(?<=开头,后面跟着一个子表达式和一个右圆括号),这个子…

    JavaScript 2023年5月28日
    00
  • Typescript中函数类型及示例详解

    Typescript中的函数类型可以通过声明函数的参数类型、返回值类型及函数主体来限制函数的使用。在使用Typescript开发中,了解函数类型及其使用方法是非常重要的,下面介绍Typescript中函数类型的详细攻略。 一、函数类型的定义 在Typescript中,可以使用以下两种方式来定义函数类型: 1.函数声明式定义函数类型 如下例所示,我们使用声明式…

    JavaScript 2023年6月10日
    00
  • js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍

    JS鼠标点击事件在各个浏览器中的写法及Event对象属性介绍 鼠标点击事件是Web开发中使用最频繁的交互功能之一,其中又以JavaScript作为事件的绑定和处理工具最为常见。本文将介绍js鼠标点击事件在各个浏览器中的写法以及Event对象属性介绍。 鼠标点击事件写法介绍 基础事件绑定及处理函数 首先,我们需要了解在各个浏览器中的鼠标点击事件绑定函数,其中a…

    JavaScript 2023年6月10日
    00
  • ES6 Class中实现私有属性的一些方法总结

    下面是关于“ES6 Class中实现私有属性的一些方法总结”的完整攻略: 1. 私有属性的概念 在ES6的Class中,私有属性是指只能在类内部访问,而无法在类外部访问的属性。目前,ES6并不支持直接定义私有属性,但是可以通过一些方法实现类似于私有属性的效果。 2. 实现私有属性的方法 以下是几种实现私有属性的方法: 2.1 在构造函数中定义私有属性 这种方…

    JavaScript 2023年6月10日
    00
  • JavaScript DOM节点添加示例

    当我们需要对网页中的元素进行动态的增删改时,JavaScript就是我们的好帮手之一。在JavaScript中,通过操作网页文档的对象模型(DOM)来实现对页面元素的增删改查。其中节点的添加,是常用的一种操作。 添加DOM节点的方法 在JavaScript中,有多种方式可以添加DOM节点,以下是其中的两种: 1. createElement()方法 crea…

    JavaScript 2023年6月10日
    00
  • JavaScript编写Chrome扩展实现与浏览器的交互及时间通知

    下面是详细讲解“JavaScript编写Chrome扩展实现与浏览器的交互及时间通知”的完整攻略。 1. 创建Chrome扩展 首先,我们需要创建一个Chrome扩展来实现与浏览器的交互和时间通知。在扩展文件夹中创建以下文件和文件夹: manifest.json:必须的扩展文件,其中包含了扩展的名称、描述、版本和其他元数据。 popup.html:扩展的弹出…

    JavaScript 2023年6月11日
    00
  • jsonp跨域请求详解

    那么让我们来详细讲解一下“jsonp跨域请求详解”的完整攻略。 什么是jsonp? JSONP(JSON with padding)是 JSON 的一种“使用模式”,可以让网页从别的域名(网站)那获取资料,即跨域请求数据,是一种非正式传输协议。 JSONP通过动态插入script标签的方式实现跨域请求,因为从不同域名下请求js文件是被允许的。JSONP传输的…

    JavaScript 2023年6月11日
    00
  • 原生js实现倒计时功能(多种格式调用)

    下面是关于原生JavaScript实现倒计时功能的攻略,包含了多种格式的调用方式: 前置知识 在学习原生JavaScript实现倒计时功能前,需要掌握HTML、CSS、和基本的JavaScript语法知识。 原生JavaScript实现倒计时功能 HTML 首先,我们需要在HTML文件中创建一个具有倒计时功能的元素,例如一个 div 元素: <div …

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