arguments.callee解耦

请对比方案1、2的写法

function factorV1(num){
    // 方案一
    return num===1?num:factorV1(num-1)*num;
}
function factorV2(num){
    // 方案二
    return num===1?num:arguments.callee(num-1)*num;
}

方案二,使用arguments.callee可以降低一次耦合,如果有一天函数改名了,或者被重新复制给其他变量了,底层代码不需要做任何改动。

但是,使用方案一底层代码依赖上层的函数名,二者必须一致,但是又没有用代码控制这种一致性。

发布了79 篇原创文章 · 获赞 9 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_33807889/article/details/105080975