【发布时间】:2019-05-12 11:40:45
【问题描述】:
我有以下代码构造一个字符串并将一个事件添加到一个显示所述字符串的按钮:
function initEvents() {
const message = processSomeString();
myButton.addEventListener( () => {
//Some other code
alert(message);
})
}
上述方法之所以有效,是因为在内存中,任意事件函数与其外部作用域一起存储。
我想删除嵌套匿名函数以提高可读性,但是如何将message 变量附加到引用函数?
考虑到 ES6+,最好采用现代方式
Function.prototype.bind() 并不理想,因为我需要 this 引用不改变我的实际上下文。
function initEvents () {
const message = processSomeString();
myButton.addEventListener(myButtonClick);
}
function myButtonClick () {
//Some other code
alert(message??);
}
【问题讨论】:
-
“去掉嵌套的匿名函数以提高可读性”...但是当你发现其他选项的可读性较少时,你还会想要吗?
-
@spender 不,但我需要先知道其他选项:P
-
为了最大的可读性,我可能会:
myButton.addEventListener( () => callSomeMethodWith(message) )
标签: javascript optimization ecmascript-6 readability