我最近一直在测试一些代码,试图更好地理解 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)
, I get hi 1 2 undefined
如果我打电话bye.cal(1,2)
, I get 2 undefined bye undefined
为此我理解call()
函数第一个参数必须是一个函数,后面是参数的数量 mybye
函数接受。但是最后一个未定义从哪里来呢?
第一个参数不必是函数。第一个参数是在函数调用上下文中设置“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 未定义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)