单表达式箭头函数中的 void

She*_*aff 5 javascript

我正在研究优秀的老void运营商的用例。我看到提到的一个是为了防止箭头函数“泄漏”它们的结果,因为它们经常被编写(见fn0下面的例子)。

因此,论点是void在您实际上不需要结果的情况下使用来防止此类泄漏(请参阅 参考资料fn2),但我真的不明白仅将语句括在括号中(请参阅 参考资料fn1)有什么区别。

function doSomething(number) { return number + 1 }

const fn0 = () => doSomething(1)
const fn1 = () => { doSomething(1) }
const fn2 = () => void doSomething(1)

console.log(fn0()) // 2
console.log(fn1()) // undefined
console.log(fn2()) // undefined
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释fn1和之间的区别fn2吗?它是否在“引擎盖下”做了一些不同的事情?这只是约定/可读性的问题吗?

T.J*_*der 1

...但我真的不明白将语句放在括号中有什么区别...

没有任何显着差异,两者都达到相同的结果。使用void只是更多的字符和更晦涩难懂。:-)

fn1有人可以向我解释和之间的区别吗fn2?它“在幕后”做了什么不同的事情吗?

并不真地。它采用不同的路径到达相同的目的地,但在这两种情况下调用函数的结果都是undefined。如您所知,fn1通过使用完整的函数体( )到达那里{},并fn2通过应用运算符到达那里void,但是其中没有潜伏的细微差别。