Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这在不同类型的回调中是什么?_Javascript - Fatal编程技术网

Javascript 这在不同类型的回调中是什么?

Javascript 这在不同类型的回调中是什么?,javascript,Javascript,我们知道我们必须在回调中保留this的值,以便在适当的上下文中执行它们。例如: someArr.forEach(function(el) { console.log(this); }); someBtn.addEventListener('click', function() { console.log(this); }); 这里当我们使用使用strict时,该将指窗口或未定义 但当我们添加一个事件时,例如: someArr.forEach(function(el) {

我们知道我们必须在回调中保留
this
的值,以便在适当的上下文中执行它们。例如:

someArr.forEach(function(el) { console.log(this); });
someBtn.addEventListener('click', function() {
        console.log(this); 
}); 
这里
当我们使用
使用strict
时,该
将指窗口或未定义

但当我们添加一个事件时,例如:

someArr.forEach(function(el) { console.log(this); });
someBtn.addEventListener('click', function() {
        console.log(this); 
}); 
此处
指单击的按钮。为什么在这个回调中,我们不必绑定任何函数,而在前一种情况下,我们必须显式地绑定它。
我可能错了,所以请澄清我的疑问。

的值

当您将函数传递给
addEventListener
forEach
时,您正在设置由其他人编写的代码来调用它


该代码将根据编写它的人的意图以不同的方式调用该函数。

单击中的
回调与附加事件处理程序的上下文中的
回调不同(即此处:
this&&someBtn.addEventHandler
)。这是一个不同的
。它正在被改变。如果你把它绑起来,
这个
在事件处理程序中不会引用按钮。但我不明白在我提出问题的上述情况下……为什么在addEventListener的情况下,我们在回调中有元素的引用,甚至没有将其绑定到回调???@JotWaraich-因为设计
addEventListener
API的人认为那就是useful@Jot因为要调用事件处理程序,将
this
设置为事件发生的元素
addEventListener会处理这个问题。因此,我们可以说,它还取决于回调的类型,它将拥有什么作为
this
insideNo。这取决于调用回调的代码。