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
上下文。