类数组对象中(长得像一个数组,本质上是一个对象):arguments

常见的对arguments的操作是三个
  1. 获取参数的长度  arguments.length
  2. 根据索引值获取某一个参数 arguments[i]
  3. callee获取当前arguments所在的函数--相当于打印当前的函数,禁止在内部使用arguments.callee(),这样会导致无限递归,除非有判断终止
类数组意味着他不是一个数组特性,而是一个对象类型
  • 但是他却拥有数组的一些特性,比如length,index
  • 但是他没有数组的一些方法,比如foreach、map等

有时候需要将arguments转换成数组对象

function foo(num1,num2){
// 1.自己遍历
var newArr=[]
for(var i=0;i<arguments.length;i++){
newArr.push(arguments[i] * 10)
}
console.log(newArr) // 2.由于argument不具备数组方法,使用显示绑定将其调用slice方法 ***********不好理解
var newArr2=Array.prototype.slice.call(arguments )
console.log(newArr2) // 3.方法二的优化版
var newArr3=[].slice.call(arguments)
console.log(newArr3) // 4.es6语法
var newArr4=Array.from(arguments)
console.log(newArr4)
// 5.rest方法
var newArr5=[...arguments]
console.log(newArr5)
} foo(10,20,30,40,50)
箭头函数中没有arguments,如果使用了arguments,他将会往上层找到,倘如上层是window,会报错!
 
在调用箭头函数的情况下打印console.log(arguments),会显示未定义
但是在node环境下运行,是可以打印出当前的arguments,因为
一个js文件会被当成一个模块,这个模块会被包裹在一个函数内,然后执行这个函数,这个函数会调用call,call内部会有自带的一些参数,所以可以打印

感谢coderwhy老师

隐式参数arguments的更多相关文章

  1. Scala 学习之路(十三)—— 隐式转换和隐式参数

    一.隐式转换 1.1 使用隐式转换 隐式转换指的是以implicit关键字声明带有单个参数的转换函数,它将值从一种类型转换为另一种类型,以便使用之前类型所没有的功能.示例如下: // 普通人 clas ...

  2. Scala 系列(十三)—— 隐式转换和隐式参数

    一.隐式转换 1.1 使用隐式转换 隐式转换指的是以implicit关键字声明带有单个参数的转换函数,它将值从一种类型转换为另一种类型,以便使用之前类型所没有的功能.示例如下: // 普通人 clas ...

  3. Scala 深入浅出实战经典 第62讲:Scala中上下文界定内幕中的隐式参数实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...

  4. Scala中的Implicit(隐式转换,隐式参数,隐式类)

    文章来自:http://www.cnblogs.com/hark0623/p/4196452.html  转发请注明 代码如下: /** * 隐式转换 隐式参数 隐式类 */ //隐式转换 class ...

  5. 显式参数 VS 隐式参数

    尽量使用显示参数,而不是隐式参数,看下面实例代码. 示例1采用显示参数,示例2采用隐式参数.对于一个不熟悉MonitorManager内部构造的调用者来说,在构造MonitorManager的时候,对 ...

  6. java this 隐式参数

    第37级 this 是隐式参数, 类的方法调用时,会系统自动传递一个this的参数给方法.(这个参数是隐式传递的) 所以在方法里可以使用this这个参数. this在方法中表示对象. this(参数列 ...

  7. Java :构造器中的显式参数和this隐式参数

    1.构造器 写一个Java类,首先要先从构造器开始,构造器与类同名,在构造类的对象时会先从构造器开始. 构造器总是伴随着new操作符的执行而被调用. 构造器主要是用来初始化类的实例域. 构造器的特点: ...

  8. Scala 中的隐式转换和隐式参数

    隐式定义是指编译器为了修正类型错误而允许插入到程序中的定义. 举例: 正常情况下"120"/12显然会报错,因为 String 类并没有实现 / 这个方法,我们无法去决定 Stri ...

  9. Spark基础-scala学习(八、隐式转换与隐式参数)

    大纲 隐式转换 使用隐式转换加强现有类型 导入隐式转换函数 隐式转换的发生时机 隐式参数 隐式转换 要实现隐式转换,只要程序可见的范围内定义隐式转换函数即可.Scala会自动使用隐式转换函数.隐式转换 ...

随机推荐

  1. 【项目管理】《IT项目管理》Kathy Schwalbe 第1章 总论

    博主:海底淤泥 1.为什么项目管理领域引起了大家的兴趣 1.更好控制财力.物力.人力资源 2.改进客户关系 3.缩短开发时间 4.降低成本和提高生产率 5.提高质量和可靠性 6.更大的边际利益空间 7 ...

  2. <数据结构>hash进阶

    hash函数构建 采取26进制 对于字符串str,令**H[i] = H[i-1]*26 + index(str[i]) **,最后H[i-1]就是str的hash值 问题:hash值过大,无法表式 ...

  3. vue为什么要设计成异步队列渲染

    异步队列渲染 上一篇文章是在vue2.0 中通过Object.defineProperty去拦截并监听数据变化的响应式原理,这篇文章将会沿着图谱继续深入探索,在依赖被通知变化了之后,会触发vue当中的 ...

  4. MySQL高级查询与编程笔记 • 【目录】

    章节 内容 实践练习 MySQL高级查询与编程作业目录(作业笔记) 第1章 MySQL高级查询与编程笔记 • [第1章 数据库设计原理与实战] 第2章 MySQL高级查询与编程笔记 • [第2章 数据 ...

  5. Android studio 报错 Unable to resolve dependency for ‘:app@releaseUnitTest/compileClasspath‘:

    出现报错: Unable to resolve dependency for ':app@debugAndroidTest/compileClasspath': Could not find any ...

  6. Zookeeper基础教程(五):C#实现Zookeeper分布式锁

    分布式锁 互联网初期,我们系统一般都是单点部署,也就是在一台服务器完成系统的部署,后期随着用户量的增加,服务器的压力也越来越大,响应速度越来越慢,甚至出现服务器崩溃的情况. 为解决服务器压力太大,响应 ...

  7. K210,yolo,face_mask口罩检测模型训练及其在K210,kd233上部署

    前段时间考研,再加上工作,时间很紧,一直没有更新博客,这几天在搞k210的目标检测模型,做个记录,遇到问题可以添加qq522414928或添加微信13473465975,共同学习 首先附上github ...

  8. Redis OM .NET Redis对象映射框架

    Redis OM Redis OM 是 Redis 官方推出的对象映射框架,即:Object Mapping.让开发人员更简单.方便的操作 Redis 数据.Redis 存储的数据抽象为对象映射,支持 ...

  9. SpringMVC拦截器的应用

    一.作用 好文章参考:https://www.cnblogs.com/panxuejun/p/7715917.html 对请求进行预处理和后处理: 使用场景: 登录验证,判断用户是否登录 权限验证,判 ...

  10. docker安装easymock

    一.准备 参考docker安装mongodb与redis文章 二.拉取 docker pull docker.io/easymock/easymock 三.启动 1.创建配置目录 mkdir -f / ...