js 的一个小问题

就是不太明白这样子写为什么不会报错?这样子写是什么意思?

let fn = () => {a: 1}
fn()

就是那个 a: 1 为什么不会报错... 是什么意思... 求解~~~ 蟹蟹!!

阅读 2k
3 个回答

我给你翻译一下

let fn = () => {a: 1}

翻译后

let fn = function() {
  a: 1
  // 没有 return 语句, 所以返回的是 undefined
}

题主疑惑的是为什么 a: 1 不报错吧. 因为 js 里面是有 label 语句的! a: 1 这里会被当做一个标记语句, 所以不会报错.

ES6箭头函数:http://es6.ruanyifeng.com/#do...

上面代码中,原始意图是返回一个对象{ a: 1 },但是由于引擎认为大括号是代码块,所以执行了一行语句a: 1。这时,a可以被解释为语句的标签,因此实际执行的语句是1;,然后函数就结束了,没有返回值。

你这个写是用语法错误的,加个括号就好了,我也经常这么写:

let fn = () => ({a: 1})
fn()

因为如果不加括号,大括号就是方法体的范围符而不是对象字面量的意思了,方法体中你直接来个a: 1肯定是不对的,加个括号就可以了

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