我以前见过这种语法,如果条件为真,我想做一些事情,我会这样写出来。
() => void (x === 0 && this.setZero())
为什么要把x === 0 && this.setZero()
包裹在空隙中? 这种模式叫什么名字?
void 将返回未定义,但如果this.setZero()
返回未定义,为什么不这样做呢?
() => x === 0 && this.setZero()
它们都是有效的 ts。用空隙包裹它更安全吗?
这只是JavaScript的事情。
void
是一个非常奇怪的JavaScript运算符:它计算其操作数,然后将undefined
作为结果。所以你的
() => void (x === 0 && this.setZero())
。是一个总是返回undefined
的箭头函数,可能会有调用this.setZero()
(如果x === 0
)的副作用。
为什么你把 x === 0 && this.setZero() 包装在 void 中?
这样函数总是返回undefined
而不是返回false
(如果x === 0
为假)或this.setZero()
的结果(如果x === 0
为true
)。
这种模式叫什么名字?
我认为它没有,特别是。
您的() => x === 0 && this.setZero()
替代方案将返回false
或this.setZero()
的结果。
我只想指出
() => void (x === 0 && this.setZero())
究竟做了什么
() => { x === 0 && this.setZero(); }
确实如此,因为除非你使用return
,否则详细箭头函数不会返回任何内容;另一种选择是:
() => { if (x === 0) this.setZero(); }