arguments 转数组

通常使用下面的方法来将 arguments 转换成数组:

  1. Array.prototype.slice.call(arguments);

  还有一个更简短的写法:

  1. [].slice.call(arguments);

  

在这里,只是简单地调用了空数组的 slice 方法,而没有从 Array 的原型层面调用。

为什么上面两种方法可以转换呢?

首先,slice 方法得到的结果是一个数组,参数便是 arguments。事实上,满足一定条件的对象都能被 slice 方法转换成数组。看个例子:

  1. const obj = { 0: "A", 1: "B", length: 2 };
  2. const result = [].slice.call(obj);
  3. console.log(Array.isArray(result), result);

  

将参数从一个函数传递到另一个函数

  1. function foo() {
  2. bar.apply(this, arguments);
  3. }
  4. function bar(a, b, c) {
  5. // logic
  6. }

  

arguments 转数组

Array.from() 是个非常推荐的方法,其可以将所有类数组对象转换成数组。

数组与类数组对象

数组具有一个基本特征:索引。这是一般对象所没有的。

  1. const obj = { 0: "a", 1: "b" };
  2. const arr = [ "a", "b" ];

  我们利用 obj[0]arr[0] 都能取得自己想要的数据,但取得数据的方式确实不同的。obj[0] 是利用对象的键值对存取数据,而arr[0] 却是利用数组的索引。事实上,Object 与 Array 的唯一区别就是 Object 的属性是 string,而 Array 的索引是 number。

ES6 中的 arguments

扩展操作符

  1. function func() {
  2. console.log(...arguments);
  3. }
  4.  
  5. func(1, 2, 3);

  执行结果是:

  1. 1 2 3

  简洁地讲,扩展操作符可以将 arguments 展开成独立的参数。

arguments的更多相关文章

  1. js参数arguments的理解

    原文地址:js参数arguments的理解 对于函数的参数而言,如下例子 function say(name, msg){ alert(name + 'say' + msg); } say('xiao ...

  2. javascript arguments(转)

    什么是arguments arguments 是是JavaScript里的一个内置对象,它很古怪,也经常被人所忽视,但实际上是很重要的.所有主要的js函数库都利用了arguments对象.所以agru ...

  3. jQuery之常用且重要方法梳理(target,arguments,slice,substring,data,trigger,Attr)-(一)

    1.jquery  data(name) data() 方法向被选元素附加数据,或者从被选元素获取数据. $("#btn1").click(function(){ $(" ...

  4. ORA-00600: internal error code, arguments: [4194]

    使用PlateSpin复制出来的一数据库服务器(Oracle 10g)在启动数据库实例时遇到"ORA-00600: internal error code, arguments: [4194 ...

  5. Javascript——arguments的shift问题谈方法“借用”

    今天本来运行了打算这样的方法 arguments.shift() (shift方法是删除数组的第一个元素,例如var arr=[1,2,3,4,5]执行var a=arr.shift();之后,a的值 ...

  6. format not a string literal and no format arguments

    今天cocos2d-x打包 android的时候报错:format not a string literal and no format arguments 报错点是:__String::create ...

  7. 安装PHP sphinx扩展 sphinx-1.1.0/sphinx.c:105:2: error: too few arguments 错误

    表现: /home/sphinx-1.1.0/sphinx.c: In function 'php_sphinx_client_read_property':/home/sphinx-1.1.0/sp ...

  8. js储存参数的数组arguments

    js函数中有个储存参数的数组arguments ,所有函数获得的参数会被编译器挨个保存到这个数组中.于是我们的js版支持参数默认值的函数可以通过另外一种变通的方法实现 function simue ( ...

  9. Qt - 错误总结 - QObject::connect: Cannot queue arguments of type 'PVCI_CAN_OBJ' (Make sure 'PVCI_CAN_OBJ' is registered using qRegisterMetaType().)

    背景:一个线程通过signal-slot发送PVCI_CAN_OBJ类型的值到主线程中, 错误提示: QObject::connect: Cannot queue arguments of type ...

  10. ORA-00600: internal error code, arguments: [SKGMFAIL], [2], [4], [4], [1], [], [], [], [], [], [], [

    ORA-00600: internal error code, arguments: [SKGMFAIL], [2], [4], [4], [1], [], [], [], [], [], [], [ ...

随机推荐

  1. 终于开始用github了

    一直以来,github的大名就如雷贯耳.虽然我半年多前就从了解到了这个神奇的网站,而且趁着当时的一时兴趣注册了账户,但是对于那时候的我来说这个网站还是太复杂了点,毕竟半年前的我还没有开始写代码啊,所以 ...

  2. Python列表list的用法

    #!usr/bin/env python# -*-coding:utf-8-*-#以下方法全在python2.7.x版本运行,请3.x以上的小伙伴们在print(放入括号内执行)#list列表的常用方 ...

  3. <<一种基于δ函数的图象边缘检测算法>>一文算法的实现。

    原始论文下载: 一种基于δ函数的图象边缘检测算法. 这篇论文读起来感觉不像现在的很多论文,废话一大堆,而是直入主题,反倒使人觉得文章的前后跳跃有点大,不过算法的原理已经讲的清晰了.     一.原理 ...

  4. WinCE非通用调试工具汇总

    WinCE-IIC调试助手(S3C2410) http://www.cnblogs.com/we-hjb/archive/2008/10/19/1314562.html WinCE下音频频谱显示(TD ...

  5. Intellij IDEA 快捷键整理(TonyCody)

    [常规] Ctrl+Shift + Enter,语句完成 "!",否定完成,输入表达式时按 "!"键 Ctrl+E,最近的文件 Ctrl+Shift+E,最近更 ...

  6. Android开发之InstanceState详解

    Android开发之InstanceState详解   本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState() 和 onRestoreInstanceS ...

  7. 1089 最长回文子串 V2(Manacher算法)

    1089 最长回文子串 V2(Manacher算法) 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 回文串是指aba.abba.cccbccc.aaaa ...

  8. POJ-1068题

    下面的代码是北京大学Online Judge网站上1068题(网址:http://poj.org/problem?id=1068)的所写的代码. 该题的难点在于实现括号匹配,我在代码中采取用-1和1分 ...

  9. [CareerCup] 2.5 Add Two Numbers 两个数字相加

    2.5 You have two numbers represented by a linked list, where each node contains a single digit. The ...

  10. url参数中带有+号,服务器端解码之后没了

    解决办法: 客户端:encodeURIComponent 服务器端:Uri.UnescapeDataString 参考网址:http://www.cnblogs.com/artwl/archive/2 ...