简述:js中的函数大家都比较熟悉,今天来分享下函数中的默认参数arguments。js的函数参数和其他的语言有些不同,它并不介意你传进来多少个参数,以及参数的数据类型,即使你在定义函数时,只设置了两个形参,那么在调用这个函数时,你给他传递一个、两个,或者是其它四个、五个实参,它都能接收,之所以会这样是因为在函数参数内部是用一个数组来表示的,在函数体内是通过arguments对象来访问这个参数数组,从而获取传递给函数的每个参数。arguments对象只是与数组类似,但他并不是一个数组,可以把它叫做伪数组,你也可以把它叫做其它的都可以。

Arguments代码实例:

一、函数的默认参数arguments;

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

输出

可以看到,我们在调用函数时,没有传递任何参数,但是依然可以在函数内部,获取到数组形式的arguments对象;

二、当函数参数只有一个时;

  function fn(a){console.log(a);console.log(arguments[0]);}fn(2)

 输出

可以看到,我们可以通过arguments[0]来获取到传递进来的参数实例;

三、当我们传递的实参个数大于形参的个数时;

  function fn(a) {console.log(a);console.log(arguments);console.log(arguments[2]);}fn(2, 3, 4)

 输出

可以看到,在我们没有使用形参接收参数时,在函数内部依然可以使用arguments来获取到实参数据。arguments接受到传递过来的所有数据,把他们都给装进了一个数组里,并且可以通过索引拿到相应的值,索引从0开始。

四、当我们传递的实参个数小于形参的个数时;

 function fn(a, b) {console.log(a);console.log(b);console.log(arguments[0]);console.log(arguments[1]);}fn(1);

 输出

 可以看到,在没有传递实参时,在函数内部使用对应的形参和arguments都是undefined;

五、当我们给形参赋值时;

修改形参

  function fn(a) {a = 5;console.log(a);console.log(arguments[0]);}fn(2, 3, 4);

 输出

 修改arguments

  function fn(a) {arguments[0] = 6;console.log(a);console.log(arguments[0]);}fn(2, 3, 4);

  输出

可以看到,通过修改形参的值和arguments的值,不管改的是两者中的哪一个,都会影响对应双方的值;

小结:

1、每一个函数,都有一个默认参数,参数是一个数组形式的arguments对象,可以通过数组下标来获取到对应的值。

2、当我们传递的实参个数大于形参的个数时,依然可以通过arguments获取到对应的实参数据,而且修改形参对应的值,arguments的值也会更新,反之亦然。

补充:当我们传递的实参个数小于形参的个数时,赋值的形参值被改变,不会影响arguments对象,因为arguments对象的大小是由传入的实参的个数决定的,并不是由定义的命名参数的个数决定的,没有传递值的形参将会自动被赋予undefined值,跟没有定义直接使用一样,举个例子

  function fn(a, b) {b = 7;console.log(a);console.log(b);console.log(arguments[0]);console.log(arguments[1]);}fn(1);

 输出

JavaScript函数中的arguments(js函数中的arguments,函数默认参数arguments)相关推荐

  1. VSCode中,新建js文件中编译器自带jQuery提示失效的解决方法

    VSCode中,新建js文件中编译器自带jQuery提示失效的解决方法 在VSCode中,新建js文件可能会发生VSCode自带的jQuery提示引起失效,如下图 在HTML文件中进行编辑,<s ...

  2. 什么是函数的副作用——理解js编程中函数的副作用

    什么是函数副作用? 函数副作用是指当调用函数时,除了返回函数值之外,还对主调用函数产生附加的影响.副作用的函数不仅仅只是返回了一个值,而且还做了其他的事情,比如: 1.修改了一个变量2.直接修改数据结 ...

  3. vue中使用arcgis js api 中通过坐标定位

    arcgis js api 中通过坐标定位 根据坐标定位到当前位置 并且放大倍数 根据坐标定位到当前位置 并且放大倍数 let graphic = new Graphic({geometry: geo ...

  4. 关于uview-ui框架在uni-app(v3编译模式,app)中,http.interceptor.js文件中无法用的getApp({allowDefault: true})获取globalData

    // 此为自定义配置参数,具体参数见上方说明Vue.prototype.$u.http.setConfig({baseUrl: getApp({allowDefault: true}).globalD ...

  5. myeclipse 项目中jsp或者js 文件中的错误是没必要处理的,可以忽略

    右键项目名-->myeclipse -->exclude from validation 就可以了.

  6. c语言map作为参数传递,C++中map和vector作形参时如何给定默认参数?

    map和vector都可以用operator[]进行访问,map是用[]中的数据作为key进行查询,而vector是用[]中的数作为下标进行访问. 如果在用operator[]进行访问的时候出现了越界 ...

  7. c语言中函数参数处理顺序以及默认参数原则

    c语言中函数参数处理顺序 下面我们来看2个案例,分析下c语言中函数参数处理顺序. 第一个: #include "stdio.h"void fn(int a,int b,int c) ...

  8. eclipse中java获取js的值_javascript – 如何在Eclipse中使用Selenium将外部.js导入我的Java测试?...

    It works, but it's not very useful, because I want to make an external .js which contains all the Ja ...

  9. 深入 JavaScript 中的默认参数!

    译者:前端小智 作者:Tania Rascia 来源:flatlogic.com 点赞再看,微信搜索**[大迁世界],B站关注[前端小智]**这个没有大厂背景,但有着一股向上积极心态人.本文 GitH ...

最新文章

  1. linux压缩文件解压乱码
  2. 程序员的自我修养六可执行文件的装载与进程
  3. java函数ao活动对象_JS之预编译和执行顺序(全局和函数)
  4. UVA11774 Doom‘s Day【数学规律+GCD】
  5. [解题报告][搜索+剪枝技巧]幻方
  6. 手机蓝牙如何减少延时_JEET ONE真无线耳机测评-高颜值低延时的集合
  7. 基于 Token 的身份验证
  8. 互动媒体设计之好玩儿的游戏(屁民科普)
  9. python大漠库_python类似大漠插件的库
  10. 解压RAR时出现“不可预料的压缩文件末端”的解决方法
  11. Jmeter录制脚本,HTTP代理服务器介绍使用
  12. 7-过零检测算法分析信号周期(app-designer
  13. 君正 Halley6 开发板调试SPI LCD
  14. MapX系列-- 地图浏览
  15. 二项式分布和多项式分布
  16. 数字时代,互联网企业的组织形态
  17. 语音识别服务_语音识别服务厂商_腾讯云语音识别服务 - 云+社区 - 腾讯云
  18. vue控制台报错Duplicate keys detected:‘xxxx‘.This may canse an update error
  19. python性能分析(一)——使用timeit给你的程序打个表吧
  20. Vista BitLocker 驱动器加密原理

热门文章

  1. 练习-编写函数对结构体类型数据进行排序
  2. libc、glibc与gcc
  3. 超码、候选码、主码(主键)、主属性、非主属性、关系数据库中的依赖、关系数据库范式、反范式
  4. 【STM32】标准库与HAL库对照学习教程八--串口通信详解
  5. 17未央,我备一曲离殇
  6. 求可以统计网络流量的VC代码,就象是金山网镖下面的那样
  7. 首届“十大最具价值”AR/VR创业项目遴选榜单丨Xtecher权威发布
  8. 【C++】(十五)自定义数据类型——共用体类型、枚举类型
  9. 篮球中各个位置的名称及介绍…
  10. jsp网站服务器配置