我是javascript的新手,我看到了这样的代码。
<button onclick="this.onClickDoSmth">Click me</button>
onClickDoSmth = () => {
let a = this.clicked();
a();
}
clicked = () => {
console.log("test");
}
将"a"的表达式替换为
onClickDoSmth = () => {
this.clicked();
}
首先需要更正。它应该是let a = this.clicked;
而不是let a = this.clicked()
.前者意味着您将返回函数分配给变量a
并在稍后使用a()
执行它。所以如果你这样做,就没有区别了。
onClickDoSmth = () => {
let a = this.clicked; //This has to be corrected
a();
}
clicked = () => {
console.log("test");
}
不同之处在于,前一个版本从函数中接收了一些东西,而后一个版本则没有。
这意味着a
的值接收this.clicked
函数返回的内容。this.clicked
必须返回一个函数,以便之后a()
可以调用它
onClickDoSmth = () => {
let a = this.clicked();
a();
}
这意味着onClickDoSmth
是一个函数。执行后,运行this.clicked
onClickDoSmth = () => {
this.clicked();
}
前者使用 赋值一个函数,如果你想再次重用,可以调用该变量。后者只是立即调用该函数。两者都将实现相同的输出。