在js中使用逗号黑客表达式

js 中一个有趣但可能有用的事情与逗号运算符有关。
我们主要使用逗号来分隔对象或数组项中的属性。
不过,我从来没有注意到它在表达中的使用。
例如:
('a', 'b')
对两个表达式(在本例中为字符串)进行求值,返回最后一个元素,即最后一个逗号后面的表达式。在本例中它返回“b”。
可以将值分配给变量,如下所示:
const letter = ('a', 'b')
letter === 'b' //true
如果您只使用简单的值,这几乎没有意义。
但是,如果我们可以运行任何表达式(包括函数调用)而不是计算字符串“a”,那将非常实用。
考虑以下代码:
const doStart = () => {console.log(started)}
let started = false
const start = (
started = true,
doStart
)
现在 start 是对 doStart() 函数的引用,但是当您调用 start() 时,start 变量为 true:
start() // true
您甚至可以使用两个以上的表达方式:
const start = (
started = true,
stopped = false,
doStart
)
这个“技巧”可以用来装饰一个你无法控制的函数,但为了简单起见,最好创建一个新函数。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
上一篇:js chaincall 下一篇:js重置表单
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。