Javascript java脚本箭头函数
我制作了一个名为btn的按钮,并给它发了一条短信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 = 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)