JavaScript 基础与提高

JavaScript 坑与技巧:函数 arguments

2019-04-07  本文已影响0人  soojade

非严格模式下,在函数开始执行时,arguments的长度和实参传递的个数是一致的,假如实参少于形参,多出的形参并不会和arguments绑定,这些修改相互之间不影响。

  function f(x, y, z) {
      x = 100;
      arguments[2] = 10; // 由于只传递两个实参,arguments[2]和z并无关联
      z = 1; // 没有传递实参,和arguments无关联
      console.log(arguments[0], arguments[1], arguments[2]);
      console.log(arguments.length); // arguments 的长度取决于实参传递的个,后期修改无效
      console.log(x, y, z);
    }
    f(3, 2); 

结果如下;
100 2 10
2
100 2 1

严格模式下,只有函数执行开始的相互映射,之后arguments和形参之间的修改互不影响。

  function f(x, y, z) {
      'use strict'
      x = 100;
      z = 1;
      arguments[1] = 10;
      console.log(arguments[0], arguments[1], arguments[2]);
      console.log(x, y, z);
    }
  f(3, 2);

结果如下;
3 10 undefined
100 2 1

箭头函数()=>{}没有arguments

    let fn = (i) => console.log(arguments);
    fn(11);

结果报错:
ReferenceError: arguments is not defined

上一篇下一篇

猜你喜欢

热点阅读