js基础扫盲 - function 和 arguments

arguments

arguments:是一个对应于传递给函数的参数的类数组对象。

function foo(x){
    console.log(arguments);
}
foo(1,2,3,4)

arguments对象不是一个 Array 。它类似于Array,但除了length属性和索引元素之外没有任何Array属性。例如,它没有 pop 方法。但是它可以被转换为一个真正的Array:


var args = Array.prototype.slice.call(arguments);
var args = [].slice.call(arguments);

// ES2015
const args = Array.from(arguments);
const args = [...arguments];

函数后面加 ():自执行函数

(function foo2(x){
    console.log(arguments);
    return x;
})(1,2,3,4)

两个要求:

  • 前面的function用()括起来,标示函数体。
  • 后面跟一个(),标示直接执行,里面传对应的参数。

如果前面函数不加(),则不会执行。

function foo (x){
    console.log(arguments);
    return x;
}(1,2,3,4)

如果添加变量赋值,则会执行

var foo = function  (x){
    console.log(arguments);
    return x;
}(1,2,3,4)

执行逻辑类似于 var foo = function(){}, foo(1,2,3,4)

arguments 传参数

function foo(){
    bar.apply(null,arguments)
}
function bar(x){
    console.log(arguments)
}
foo(1,2,3,4)

随机浏览