Rod*_*nte 3 javascript parameters function call
我最近一直在测试一些代码,试图更好地理解 javascript。然后我遇到了call()我无法很好理解的函数。
我有以下代码:
function hi(){
    console.log("hi");
}
var bye = function(param, param2){
    console.log(param);
    console.log(param2);
    console.log("bye");
}
如果我打电话bye.call(hi(), 1, 2),我会得到hi 1 2 undefined
如果我打电话bye.cal(1,2),我会得到2 undefined bye undefined
据我了解,call()函数的第一个参数必须是一个函数,后面是我的函数接受的参数数量bye。但是最后一个未定义从哪里来呢?
第一个参数不必是函数。第一个参数是在函数调用上下文中设置“this”变量的对象。
var bye = function(param, param2){
    console.log(param);
    console.log(param2);
    console.log("bye");
    console.log(this.x)
}
t = {'x': 1};
bye.call(t, 1, 2);
控制台应显示:1、2、“再见”和 1。
未定义的是函数的返回值。
在您的第一次通话中:
bye.call(hi(), 1, 2)
您正在调用 hi() (因此它打印“hi”),不使用返回值,1 和 2 是 bye 的参数。
在您的第二次通话中:
bye.cal(1,2)
1 被分配给此。2 是 param,param2 未定义。