我是Javascript的新手,并创建了一个示例函数来测试javascript的apply函数。

我需要对此代码进行一些澄清,


值-x将采用第一个数组['val1','val2'],但只是想知道它是否替代(this,x)。
2.我看到console.log中打印了3个项目,最后一个项目-未定义,未定义,会发生什么

var dummyfunction1 = function(val1,val2){
    console.log(array1,array2);
};

[['val1','val2'],['val3','val4']].forEach(function(x){
    dummyfunction1.apply(this,x);
});

dummyfunction1()

最佳答案

这里有几个问题。

dummyfunction1正在使用主体中未定义的变量。应该是这样的:

var dummyfunction1 = function(val1,val2){
    console.log(val1,val2);
};


最后一行dummyfunction1()正在对没有参数的dummyfunction1进行附加调用。这是您看到的未定义的未定义。

完整的代码应为:

var dummyfunction1 = function(val1,val2){
    console.log(val1,val2);
};

// this will automatically be run, no need to call dummyfunction1 on your own after this
[['val1','val2'],['val3','val4']].forEach(function(x){
    dummyfunction1.apply(this,x);
});

08-16 13:33