一道javascript的编程题

假设现在有两个函数function A()和function B(),现在希望创建一个新的函数function C(),新函数的逻辑是将自己接收到的前两个参数传给函数A,剩余所有参数传给函数B,请用原生javascript实现函数C
举例:
如果调用函数C:C[a,b,c,d,e]
相当于调用函数A和函数B:A(a,b),B(c,d,e)

我的代码:

function A() {console.log(arguments)};
function B() {console.log(arguments)};
function C() {
    A(arguments[0],arguments[1]);
    var args = Array.prototype.slice.call(arguments);
    var rArguments = args.slice(2);
    B(rArguments);
}

C('A1','A2','B1','B2','B3');

此方法中A函数接受两个参数应该是没问题的;但是B函数,接受的参数是C函数余下参数组成的数组,应该不符合题意,有什么办法,可以将剩下参数逐个传入B函数呢?

阅读 3.9k
6 个回答

在ES6就是一个扩展运算符的事情。。

B(...rArguments);
function C(a1,a2,...args) {
    A(a1,a2)
    B(...args)
}
function C() {
    var args = [].slice.call(arguments)
    A.apply(null, args.slice(0, 2))
    B.apply(null, args.slice(2))
}

ES6的方法试一下

function a(v1, v2){
  console.log(v1, v2);
}

function b(...v){
  console.log(v);
}

function c(...all){
  a(all[0], all[1]);
  b(...(all.slice(2)));
}

c(1, 2, 3, 4, 5, 6, 7);

主要使用到了es6的一些新特性。

<script>
    
    function C(a, b, ...args){
        const A = function(a,b){console.log(a,b);}
        const B= function(...args){console.log(...args);}
        A(a,b);
        B(args);
    }
    
    C(1,2,3,4,5,6,7,8);
</script>

function A() {console.log(arguments)};
function B() {console.log(arguments)};
function C() {

A(arguments[0],arguments[1]);
var args = Array.prototype.slice.call(arguments);
var rArguments = args.slice(2);
B.apply(this, rArguments);

}

C('A1','A2','B1','B2','B3');

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题