关于箭头函数的疑问

很多教程里都这么写的:
如果箭头函数只有一行语句,且不需要返回值,可以采用下面的写法,就不用写大括号了。

let fn = () => void doesNotReturn();

我想知道void doesNotReturn()是什么意思?doesNotReturn是随便乱写的吗?

阅读 4k
3 个回答

void就是什么也不返回,但是执行后面的表达式。
这里其实就是想简化代码,实际上相当于,行数多了一点:

let fn = () => {
  doesNotReturn()
}

但是如果你写成下面这样,这个函数又会返回doesNotReturn函数的返回值:

let fn = () => void doesNotReturn();

另外一种写法也可以是:

let fn = () => (doesNotReturn(), undefined)

运用逗号表达式,执行了表达式后,最后fn这个函数不返回值。

主要是代码简洁的一种写法而已。

使返回值为undefined

<a href="javascript:void(0);" />

和这个类似

你可以试一下以下代码

const a = () => {return 1}; // 相当于const a = () => 1;
a(); // 1
const b = () => a();
b(); // 1
const c = () => void a();  // void 摒弃了a的返回值
c() // undefined

归根结底 这些都是语法糖而已
箭头函数不需要大括号其实就是为了默认return(在这里就是默认return 了a的返回值),但是如果你这个函数自身并不需要返回值,那么用void修饰以下就可以了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题