有人可以请解释为什么下面的代码返回2次未定义?通过调用和调用调用Javascript函数不能处理参数
var test = function (theArr) {
alert(theArr);
};
test.call(6); //Undefined
var theArgs = new Array();
theArgs[0] = 6;
test.apply(theArgs) //Undefined
有人可以请解释为什么下面的代码返回2次未定义?通过调用和调用调用Javascript函数不能处理参数
var test = function (theArr) {
alert(theArr);
};
test.call(6); //Undefined
var theArgs = new Array();
theArgs[0] = 6;
test.apply(theArgs) //Undefined
为JavaScript调用方法的语法:
fun.call(object, arg1, arg2, ...)
为JavaScript的语法应用方法:
fun.apply(object, [argsArray])
的主要差别是该呼叫()接受一个参数列表,而apply()接受一个单独的参数数组。
所以,如果你要调用它打印东西的功能,并通过一个对象的范围为它的执行,你可以这样做:
function printSomething() {
console.log(this);
}
printSomething.apply(new SomeObject(),[]); // empty arguments array
// OR
printSomething.call(new SomeObject()); // no arguments
所以要明确解决给定的代码:'test.call(this,6);'或'test.apply(this,theArgs);' –
谢谢!我现在正在从Jquery切换回Javascript的基础知识,并且它也需要一些使用:) – HerbalMart
为了进一步阐明:Object参数指定执行该函数时将涉及的this关键字。 –
为什么你需要使用呼叫的方法? –
您的意思是它在警告对话框中显示“Undefined”,对不对?因为任何地方都没有返回值。 –