es6箭头功能

时间:2017-06-06 09:22:37

标签: javascript ecmascript-6

我会在浏览器中测试一下

let foo = () => ({ bar: 2 })

但是偶然输入了

let foo = () => { bar: 2}

为什么没有抛出错误?

4 个答案:

答案 0 :(得分:3)

在第二种情况下,bar是一个标签。请参阅:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/label

2”本身就是一个有效的陈述。

答案 1 :(得分:0)

这是基本语法:

() => { statements }

高级:

// Parenthesize the body of function to return an object literal expression:
params => ({foo: bar})

MDN Arrow functions

答案 2 :(得分:0)

这两种语法是正确的,但它们没有定义相同的功能。

function foo1() {
  return {bar: 2};
}

function foo2() {
  bar: 2;
}

答案 3 :(得分:0)

取决于什么是酒吧。如果是一个标签,那就是对象的关键。 但是如果它是一个变量,那个语法就不会起作用。

好奇心灵的一些额外语法如下所示: -

let foo = () => ({ bar: 2}); //works. object is returned
//let foo = () => ({ 'bar': 2}); //works. object is returned

//let foo = () => { let bar = 2; return bar; }; //works
//let foo = (() => { let bar = 2; return bar; }); //works
//let foo = (() => { let bar = 2; return bar}); //works

//let foo = () => ({ let bar = 2; return bar; }); //WONT work
//let foo = (p1=3) => p1 ; //works
let foo = () => 1; //works

console.log(foo());