为什么函数体中的冒号不会在JavaScript中引发错误?

爱德华多·马托斯(Eduardo Matos)

我想从箭头函数返回一个对象,但是下面的代码正在返回undefined我意识到花括号被解释为函数主体的开始/结束。令我着迷的是为什么a: 1没有抛出错误。

const foo = () => {a: 1};
foo();
// > undefined
阿德里亚尼6

问题是解析器看到一个名为“ a”标签,该标签属于表达式语句“ 1”。由于根本没有return语句,因此返回的值始终是未定义的。

如果将主体包裹在'()'中,则会看到返回的对象,请参见下文。

const foo = () => ({a: 1});
console.log(foo());

编辑:通过添加括号,您将强制解析器将对象文字视为表达式,以便不将其视为阻塞语句。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么以“->”开头的行不会在Javascript中引发错误?

为什么此Exredis客户端不会在on_exit回调中引发错误?

为什么分配给字符串的一部分(使用数组语法)不会在javascript中引发错误?

当测试不会在 Python 中引发错误时,执行代码的最佳方法是什么?

为什么`nounset` shell选项不会在未设置的数组上引发错误?

为什么Python的unittest.assertRaises()不会在这里引发错误?

为什么 NaN 不会在 python 中引发任何错误?

为什么转换测量会在 swift 中引发错误?

为什么可迭代操作会在 Apache Beam 函数中引发错误?

为什么读取属性有时会在javascript中引发错误?

Axios Promise不会在Vue方法中引发错误

当数组必须为某种类型时,为什么flowjs不会在空数组上引发错误?

为什么我的ibjects不会在javascript中变形?

ANTLR不会在无效输入上引发错误

Foxpro不会在算法溢出时引发错误

为什么为Float除以零不会在Ruby中引发异常?

为什么将Double.NaN转换为int不会在Java中引发异常?

为什么事件处理程序会在 Firefox 中引发错误?

当使用其他单词代替onclick值中的“ javascript”时,为什么浏览器不会引发错误?

如何使函数明确指出它会在 JavaScript 中引发错误?

为什么Dict(5:2)在Julia中不会引发错误?

在 React 与 ES6 中,constructor(prop) 不会引发错误。为什么?

为什么在茉莉花测试中不会引发错误?

在 C 中,变量的多次初始化不会引发错误。为什么?

为什么在 numpy 数组中索引不存在的维度不会引发错误?

为什么调试器不会在drupal hook_menu函数中停止?

为什么python不会在这个函数中添加

为什么eval()中的typeof在我的函数中引发错误?

为什么“ throw null”不会在Java中创建编译错误?