20170605-函数的arguments

arguments

arguments是一个类数组对象,包含着传入函数中的一切参数。虽然arguments的主要用途是保留函数参数,然则这个对象另有一个名叫callee的属性,该属性是一个指针,指明具有这个arguments对象的函数。

例子:

function factorial(num){
    if(num<=1){
        return 1
    }else {
        return num * factorial(num-1)
    }
}

上面的代码完成了阶乘函数的递归完成,然则这个函数的实行与函数名factorial牢牢耦合在了一同,假如涌现下面如许的状况,就会出题目:

var fn = factorial
factorial = null
fn(10)  // error: factorial is not a function

为了处理这类题目,能够运用arguments的callee属性:

function factorial(num){
    if(num<=1){
        return 1
    }else {
        return num * arguments.callee(num-1)
    }
}

经由过程运用arguments对象的callee属性,不管援用函数运用的是什么名字,都能够保证一般完成递归挪用。

    原文作者:jhhfft
    原文地址: https://segmentfault.com/a/1190000009662771
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞