diff --git a/docs/rules/arrow-body-style.md b/docs/rules/arrow-body-style.md index 25f3b5129b8c..b945b2325048 100644 --- a/docs/rules/arrow-body-style.md +++ b/docs/rules/arrow-body-style.md @@ -4,7 +4,9 @@ Arrow functions can omit braces when there is a single statement in the body. Th ## Rule Details -This rule can enforce the use of braces around arrow function body. +Arrow functions have two syntactic forms for their function bodies. They may be defined with a *block* body (denoted by curly braces) `() => { ... }` or with a single expression `() => ...`, whose value is implicitly returned. + +This rule may be used to standardize your usage and thus avoid syntactic ambiguity. ## Options @@ -12,6 +14,7 @@ The rule takes one option, a string, which can be: * `"always"` enforces braces around the function body * `"as-needed"` enforces no braces where they can be omitted (default) +* `"never"` enforces no braces around the function body (constrains arrow functions to the role of returning an expression) ### "always" @@ -84,3 +87,30 @@ let foo = () => { // do nothing. }; ``` + +### "never" + +When the rule is set to `"never"` the following patterns are considered problems: + +```js +/*eslint arrow-body-style: ["error", "never"]*/ +/*eslint-env es6*/ + +let foo = () => { + return 0; +}; +let foo = (retv, name) => { + retv[name] = true; + return retv; +}; +``` + +The following patterns are not considered problems: + +```js +/*eslint arrow-body-style: ["error", "as-needed"]*/ +/*eslint-env es6*/ + +let foo = () => 0; +let foo = () => ({ foo: 0 }); +```