diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/@babel/plugin-transform-parameters/README.md | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip | |
switch to vuepress
Diffstat (limited to 'node_modules/@babel/plugin-transform-parameters/README.md')
| -rw-r--r-- | node_modules/@babel/plugin-transform-parameters/README.md | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/node_modules/@babel/plugin-transform-parameters/README.md b/node_modules/@babel/plugin-transform-parameters/README.md new file mode 100644 index 00000000..1c96bcee --- /dev/null +++ b/node_modules/@babel/plugin-transform-parameters/README.md @@ -0,0 +1,94 @@ +# @babel/plugin-transform-parameters + +> Compile ES2015 default and rest parameters to ES5 + +This plugin transforms ES2015 parameters to ES5, this includes: + +- Destructuring parameters +- Default parameters +- Rest parameters + +## Examples + +**In** + +```javascript +function test(x = "hello", { a, b }, ...args) { + console.log(x, a, b, args); +} +``` + +**Out** + +```javascript +function test() { + var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "hello"; + var _ref = arguments[1]; + var a = _ref.a, + b = _ref.b; + + for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { + args[_key - 2] = arguments[_key]; + } + + console.log(x, a, b, args); +} +``` + +## Installation + +```sh +npm install --save-dev @babel/plugin-transform-parameters +``` + +## Caveats + +Default parameters desugar into `let` declarations to retain proper semantics. If this is +not supported in your environment then you'll need the +[@babel/plugin-transform-block-scoping](http://babeljs.io/docs/plugins/transform-block-scoping) plugin. + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["@babel/plugin-transform-parameters"] +} +``` + +### Via CLI + +```sh +babel --plugins @babel/plugin-transform-parameters script.js +``` + +### Via Node API + +```javascript +require("@babel/core").transform("code", { + plugins: ["@babel/plugin-transform-parameters"] +}); +``` + +## Options + +### `loose` + +`boolean`, defaults to `false`. + +In loose mode, parameters with default values will be counted into the arity of the function. This is not spec behavior where these parameters do not add to function arity. + +The `loose` implementation is a more performant solution as JavaScript engines will fully optimize a function that doesn't reference `arguments`. Please do your own benchmarking and determine if this option is the right fit for your application. + +```javascript +// Spec behavior +function bar1 (arg1 = 1) {} +bar1.length // 0 + +// Loose mode +function bar1 (arg1 = 1) {} +bar1.length // 1 +``` |
