Javascript java脚本箭头函数

Javascript java脚本箭头函数,javascript,function,arrow-functions,Javascript,Function,Arrow Functions,我制作了一个名为btn的按钮,并给它发了一条短信 btn = document.createElement('button') btn.textContent = "Hello World" 我想让它在被点击时提醒它的文本内容 我知道我可以使用: btn.onclick = function(){alert(this.textContent)} 但最近我了解了这些箭头函数,我想在这里使用它,所以我做了这个 btn.onclick = ()=>{alert(this.

我制作了一个名为btn的按钮,并给它发了一条短信

btn = document.createElement('button')
btn.textContent = "Hello World"
我想让它在被点击时提醒它的文本内容

我知道我可以使用:

btn.onclick = function(){alert(this.textContent)}
但最近我了解了这些箭头函数,我想在这里使用它,所以我做了这个

btn.onclick = ()=>{alert(this.textContent)}

但它们都发出警报
未定义


那么我该怎么做呢?

这个
表示它在arrow函数中的父作用域,而它表示常规函数中的按钮组件。因此,在arrow函数中,您需要使用
btn.textContent
而不是
this.textContent

btn=document.createElement('按钮')
btn.textContent=“你好,世界”
//btn.onclick=function(){alert(this.textContent)}
btn.onclick=(事件)=>{alert(event.target.textContent)}

文件.正文.附件(btn)箭头函数不绑定到
对象,因为它们的行为更像您可以运行的本地定义的代码束。这就是为什么使用
不起作用-您在全局上下文中创建了箭头函数,其中
被定义为引用
窗口
。解决这个问题的方法是使用另一个有用的小细节:
事件
参数:

设i=0;
document.body.onclick=event=>event.target.textContent=i++
html,正文{高度:100%;}
div{位置:固定;顶部:0;左侧:0;宽度:100%;高度:100%;}

0
最重要的一点是:箭头函数没有自己的
this
,它们从创建它们的任何上下文继承
this
,就像一个仅在函数范围内可用的变量一样。在全局上下文中,这意味着
指的是窗口,而不是元素。阅读文档了解更多信息和细节:“最近我了解了[这些]箭头功能” — 你从哪里学会了在那样的箭头函数中使用
这个
?在使用您不知道如何使用的功能之前,请先阅读,然后再提问。对不起,我的意思是我听说过它。这是真的,因为它们也是在全局范围内定义的。如果执行
function(){dom.onclick=()=>console.log(this)}
,您将得到一个不同的对象。基本上,
this
指的是在创建箭头函数的作用域中引用的任何
this
。是的,这意味着箭头函数将具有其父函数的作用域。我看到您现在已对其进行了编辑:)是的,我已对其进行了编辑。谢谢你的信息
btn.onclick = ()=> alert(this.textContent)