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

相关文章

  • JavaScript定时器实现无缝滚动图片

    下面我来介绍一下如何使用JavaScript定时器实现无缝滚动图片的完整攻略。 实现思路 首先,我们需要明确我们要实现的功能:无缝滚动图片。那么,如何做到无缝呢?想必大家都知道,无缝滚动就是前面的图片轮廓从右边消失,后面的图片轮廓从左边补上去,这样的效果看起来就像是图片一直在匀速滚动一样。 因此,我们可以考虑将一排图片放在一个盒子里,利用定时器来操纵图片的位…

    JavaScript 2023年6月11日
    00
  • 详解json串反转义(消除反斜杠)

    下面我将详细讲解如何反转义JSON串中的反斜杠,从而去除JSON中的转义字符。 什么是JSON转义字符 JSON中,所有的控制字符和非ASCII字符都必须进行转义。转义字符是由反斜杠加上一个字符组成的,比如\”表示双引号,\\表示反斜杠,\n表示换行符。这些转义字符可以让一个字符变得特别,这也是JSON可以描述Unicode字符集的原因。 为什么需要反转义J…

    JavaScript 2023年6月11日
    00
  • jQuery验证手机号邮箱身份证的正则表达式(含港澳台)

    下面是关于“jQuery验证手机号邮箱身份证的正则表达式(含港澳台)”的完整攻略。 什么是正则表达式? 正则表达式是一种特殊的字符序列,它们可以用于搜索和验证文本中的信息。尤其在表单验证场景中,正则表达式是一种非常常见的用法。 手机号验证的正则表达式 以下是验证手机号的正则表达式,支持大陆、港澳台地区: // 手机号验证正则表达式 /^(13[0-9]|14…

    JavaScript 2023年6月10日
    00
  • 使用jquery的cookie实现登录页记住用户名和密码的方法

    使用jQuery的cookie插件可以方便地实现记住用户名和密码功能。接下来,我将为您提供完整的攻略,以实现此功能。 在HTML中添加相关代码 首先,在登录页面的表单中添加两个复选框,一个用于记住用户名,一个用于记住密码。这些复选框应该具有唯一的ID,以便在jQuery中引用它们。 <label for="rememberUsername&q…

    JavaScript 2023年6月11日
    00
  • 浅谈JS正则表达式的RegExp对象和括号的使用

    浅谈JS正则表达式的RegExp对象和括号的使用 正则表达式是一种用来精确匹配字符串的工具,而JavaScript中的RegExp对象可以帮助我们在代码中使用正则表达式。 RegExp对象 在JavaScript中,RegExp对象可以通过构造函数创建: // 创建正则表达式 const regex = new RegExp(‘ab+c’); // 或者 c…

    JavaScript 2023年6月10日
    00
  • 5天学会asp

    5天学会ASP完整攻略 ASP是一种基于服务器端脚本语言的Web开发技术,使用ASP可以轻松构建动态网站和Web应用程序。如果你想在5天时间内掌握ASP技术,下面是具体的学习攻略: Day 1:入门 先了解ASP的基础知识,可以查看一些相关的文章或者教程,例如MDN web文档等 安装IIS(Internet Information Services)Web…

    JavaScript 2023年6月10日
    00
  • js实现ajax的用户简单登入功能

    下面就是实现“js实现ajax的用户简单登入功能”的完整攻略: 概述 Ajax是异步JavaScript和XML的缩写,是一组Web开发技术,可在不重新加载整个页面的情况下向Web服务器发送和接收数据。此外,Ajax在网络上被大量使用,一些开发人员发现这种方法比传统的提交表单方式更灵活。 相应地,我们可以通过ajax实现用户的简单登入功能。 实现步骤 1. …

    JavaScript 2023年6月11日
    00
  • 调试Javascript代码(浏览器F12及VS中debugger关键字)

    调试JavaScript是Web开发中的重要环节,它可以帮助我们追踪和解决代码错误,提高开发效率和代码质量。下面我将分别介绍使用浏览器F12和VS中的debugger关键字进行JavaScript调试的方法和示例。 使用浏览器F12调试JavaScript代码 打开网页并打开开发者工具:F12或者右键选择“检查”; 在Sources(源码)选项卡中找到要调试…

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