Arguments(Array-Like Objects)

  arguments对象是所有(非箭头)函数中都可用的局部变量

  拥有四个属性(按照规范来说只有三个了----caller)

  •   arguments.callee---指向当前执行的函数
  •   agruments.caller----指向调用当前函数的函数 (已移除)
  •   arguments.length---指向传递给当前函数的参数数量
  •   arguments.arguments--- 返回一个新的Array迭代器对象,该对象包含参数中每个索引的值

arguments对象可以与剩余参数默认参数解构赋值参数结合使用

function func(...args){
return args
} func(1,2,3) // [1,2,3] /* --------------------------------------------------------- */ function func(a) {
arguments[0] = 99; // 更新了arguments[0] 同样更新了a
console.log(a);
}
func(10); // "use strict"
func(10); // /* --------------------------------------------------------- */ function func(a) {
a = 99; // 更新了a 同样更新了arguments[0]
console.log(arguments[0]);
}
func(10); // "use strict"
func(10); // /* --------------------------------------------------------- */ function func(a = 55) {
arguments[0] = 99; // 更新了arguments[0]不会更新a
console.log(a);
}
func(10); // /* --------------------------------------------------------- */ function func(a = 55) {
a = 99; // 更新了a不会更新arguments[0]
console.log(arguments[0]);
}
func(10); // 总结:
不在严格模式下,arguments[0]改变,会使相对应的形参也发生改变,
修改形参,arguments[0]也会相应被修改
而在严格模式则不会被修改

数组

拥有三个属性,3个方法,N个实例方法(原谅我不数了)

数组是一种类列表对象,它的原型中提供了遍历和修改元素的相关操作

数组与Arguments的区别

  数组是构造函数 typeof Array ( function)

  Arguments是所有(非箭头)函数中都可用的局部变量   使用方式只能在函数中

将Arguments转为Array的方法(摘自hanzichi老师

function fn() {
// Uncaught TypeError: arguments.push is not a function
// arguments.push(4); var arr = [];
for (var i = 0, len = arguments.length; i < len; i++)
arr[i] = arguments[i]; arr.push(4); // [1, 2, 3, 4]
} fn(1, 2, 3); /* ------------------------------------------ */ function fn() {
var arr = Array.prototype.slice.call(arguments);
arr.push(4); // arr -> [1, 2, 3, 4]
} fn(1, 2, 3);
或者可以用 [] 代替 Array.prototype 节省几个字节。 function fn() {
var arr = [].slice.call(arguments);
arr.push(4); // arr -> [1, 2, 3, 4]
} fn(1, 2, 3); /* ------------------------------------------ */
// es6语法
var str = "helloworld";
var arr = Array.from(str);
// ["h", "e", "l", "l", "o", "w", "o", "r", "l", "d"] /* ------------------------------------------ */
// 兼容ie方法 function nodeListToArray(nodes){
var arr, length; try {
// works in every browser except IE
arr = [].slice.call(nodes);
return arr;
} catch(err){
// slower, but works in IE
arr = [];
length = nodes.length; for(var i = 0; i < length; i++){
arr.push(nodes[i]);
} return arr;
}
}

资料参考:MDN Arguments   MDN Array  hanzichi老师的见解

数组和arguments的更多相关文章

  1. 伪数组(arguments及字符串)转数组的方法 贼简单

    超简单的伪数组转数组的方法, 简单到令人发指! (这里伪数组使用arguments) 1.使用 Array.prototype.slice Array.prototype.slice.call(arg ...

  2. 08-为数组和arguments

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  3. (三十六)类数组对象arguments

    类数组对象:arguments 在函数调用时,我们总能见到arguments这个对象,它具体是用来干什么的呢?感觉逼格非常高呢 函数在使用时,我们总会位函数传入各种参数,arguments会将参数储存 ...

  4. 类数组对象arguments 和 数组对象

    arguments并不是一个真正的数组,而是一个“类似数组(array-like)”的对象: 就像下面的这段输出,就是典型的类数组对象: {0:12, 1:23} 一.类数组 VS 数组 相同点: 都 ...

  5. 浅谈js的类数组对象arguments

    类数组对象:arguments总所周知,js是一门相当灵活的语言.当我们在js中在调用一个函数的时候,我们经常会给这个函数传递一些参数,js把传入到这个函数的全部参数存储在一个叫做arguments的 ...

  6. js 类数组对象arguments

    function Add() { for (var i = 0; i < arguments.length; i++) { console.log(arguments[i]); } } Add( ...

  7. 将arguments转换成数组的方法

    将函数里的arguments,转换成一个真正的数组的方法,arguments是个类数组,除了有实参所组成的类似数组以外,还有自己的属性,如callee,arguments.callee就是当前正在执行 ...

  8. one:arguments对象伪数组

    这是我的第一个博客 <script> //计算N个数字的和 //定义一个函数,如果不确定用户是否传入了参数,或者说不知道用户传入了几个参数,没办法计算, // 但是如果在函数中知道了参数的 ...

  9. javascript arguments(转)

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

随机推荐

  1. hdu 折线分割平面(递推)

    题解: 首先我们考虑直线的情况: 当n=1时原来的1个平面被分割成了2个: 当n=2时原来的2个平面被分割成了4个: 当n=3时原来的4个平面被分割成了7个: 也就是说F(n)=F(n-1)+n且n= ...

  2. UVa 12099 The Bookcase (DP)

    题意:有 n 本书,每本书有一个高度和宽度,然后让你制作一个3层的书架,可以放下所有的书,并且要高*宽尽量小. 析:先把所有的书按高度进行排序,然后dp[i][j][k] 表示 前 i 本书,第二 层 ...

  3. ContextLoaderListener和Spring MVC中的DispatcherServlet学习 随手记

    Servlet上下文关系 DispatcherServlet的上下文是通过配置servlet的contextConfigLocation来加载的,默认实现是XmlWebApplicationConte ...

  4. 在Mac OS下配置PHP开发环境

    实在厌倦了windows无缘无故的宕机.病毒了吗,哈哈哈,这个跟我都没什么关系.准备使用下现如今牛X到不行的云平台没有办法只好研究下PHP. 现在的云平台支持的语言只有PHP.Java和Python. ...

  5. sqlplus 简单的几个查询语句

    sqlplus 是用来和oracle进行交互的工具,可以在电脑端使用,也可以在服务器使用 常用命令    show        显示SQL Plus中的信息 connect        先无条件断 ...

  6. unittest测试框架详谈及实操(五)

    测试报告——生成HTML格式的测试报告 前面的实例输出的所有测试结果都是以命令行日志的方式展示,不止于难看,但也不适合直接把那样的测试结果截图发给相关人员,尤其是领导.这时需要更加友好的测试结果,既能 ...

  7. Git出现SSL connect error的解决办法

    最近在使用Go开发项目中,因为需要安装一个Package,所以使用了go get命令 ,然后就出现git clone ... SSL connect error的错误: 出现这种错误有可能是nss的版 ...

  8. Postman -- HTTP请求的Chrome插件

    摘要 : Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件. 用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网 ...

  9. 【小梅哥SOPC学习笔记】SOPC开发常见问题及解决办法集锦

    SOPC开发常见问题及解决办法集锦 一.Symbol 'NULL' could not be resolved 近期在评估使用NIOS II处理器进行项目的开发,我使用的软件是Quartus II 1 ...

  10. Java菜鸟之java基础语法,运算符(三)

    赋值运算符 (一)JAVA种的赋值运算符 = ,代表代表的等于,一般的形式是  左边变量名称   =     右边的需要赋的指或者表达式,如果左侧的变量类型级别比较高,就把右侧的数据转换成左侧相同的高 ...