类数组对象中(长得像一个数组,本质上是一个对象):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. Java 8 的内存结构

    Java8内存结构图 虚拟机内存与本地内存的区别 Java虚拟机在执行的时候会把管理的内存分配成不同的区域,这些区域被称为虚拟机内存,同时,对于虚拟机没有直接管理的物理内存,也有一定的利用,这些被利用 ...

  2. 第三十七个知识点: The Number Field Sieve

    第三十七个知识点: The Number Field Sieve 数域筛法(The Number Field Sieve ,NFS)是已知的分解算法中最有效率的.它的运行时间取决于被分解的数的大小而不 ...

  3. MMD

    目录 概 主要内容 定义 MMD for kernel function classes 一个无偏统计量 MMD test Borgwardt K., Gretton A., Rasch M., Kr ...

  4. JSP中的九大内置对象

    JSP九大内置对象 pageContext 存东西 Request 存东西 Response Session 存东西 Application(servletContext) 存东西 config(se ...

  5. Java Web程序设计笔记 • 【第1章 Web应用程序】

    全部章节   >>>> 本章目录 1.1 Web 应用程序 1.1.1 Web 应用程序概述 1.1.2 Web 应用程序的工作原理 1.1.3 实践练习 1.2 HTTP协议 ...

  6. SpringBoot文章合集

    SpringBoot文章合集 SpringBoot合集为<尚硅谷雷神SpringBoot2零基础入门(spring boot2)>的学习以及项目中使用知识点进行整理. SpringBoot ...

  7. 从零开始学springboot-1.创建项目

    新建一个项目 添加依赖 点击完成,项目结构如下 手动添加以下依赖 打开pom.xml文件,手动添加以下依赖,用于自动生成代码 <dependency> <groupId>com ...

  8. HiSql 实现case语法操作 新一代无实体ORM框架

    HiSql 实现case语法操作 在SqlServer,Oralce,Hana,PostGreSql,MySql 这些数据都支持SQL case语法,平常在实现业务开发中也会常用到,那么HiSql对于 ...

  9. nuxt服务端渲染

    <template> <div class="page"> page is search <ul> <li v-for="(it ...

  10. js中点击返回顶部

    window.scrollTo(0, 0);当点击返回顶部的时候调用这个方法即可 handleScrollTop(){ window.scrollTo(0, 0); }