Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.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 onclick事件以不同方式执行相同的函数_Javascript_Html_Anonymous Function - Fatal编程技术网

Javascript onclick事件以不同方式执行相同的函数

Javascript onclick事件以不同方式执行相同的函数,javascript,html,anonymous-function,Javascript,Html,Anonymous Function,我有一个测试功能: 功能测试(元素){ console.log(element.id); 控制台日志(元素); } 当按下我的按钮afsdasd时,我想将其用作回调。如果我这样做: document.getElementById('testbtn').onclick = () => { test(this); }; document.getElementById('testbtn').onclick = function() { test(this); };

我有一个测试功能:

功能测试(元素){
console.log(element.id);
控制台日志(元素);
}
当按下我的按钮
afsdasd
时,我想将其用作回调。如果我这样做:

document.getElementById('testbtn').onclick = () => { 
    test(this); 
};
document.getElementById('testbtn').onclick = function() { 
    test(this); 
};
我得到以下输出: 但是,如果我这样做:

document.getElementById('testbtn').onclick = () => { 
    test(this); 
};
document.getElementById('testbtn').onclick = function() { 
    test(this); 
};
输出不同:
为什么?我认为两个版本完全相同?

第一个是箭头函数,第二个是常规函数。箭头函数没有自己的
this
绑定,因此它们将在下一个外部词法范围中搜索此绑定。在您的例子中,arrow函数的封闭词法范围是Window对象

箭头函数对此没有自己的定义。这个值是 使用封闭的词汇范围;箭头功能遵循正常设置 变量查找规则。所以,在寻找这个不是 在当前作用域中,箭头函数最终会找到 从它的封闭范围


第一个是箭头函数,第二个是正则函数。箭头函数没有自己的
this
绑定,因此它们将在下一个外部词法范围中搜索此绑定。在您的例子中,arrow函数的封闭词法范围是Window对象

箭头函数对此没有自己的定义。这个值是 使用封闭的词汇范围;箭头功能遵循正常设置 变量查找规则。所以,在寻找这个不是 在当前作用域中,箭头函数最终会找到 从它的封闭范围


这是因为箭头函数没有自己的
this
上下文。这是因为箭头函数没有自己的
this
上下文。