nodeJSでES6を使う(多分)
よくわかってないのですが、harmonyオプションをできるみたいです。
:testnode$ node -help | grep harm --harmony_scoping (enable harmony block scoping) --harmony_modules (enable harmony modules (implies block scoping)) --harmony_proxies (enable harmony proxies) --harmony_generators (enable harmony generators) --harmony_numeric_literals (enable harmony numeric literals (0o77, 0b11)) --harmony_strings (enable harmony string) --harmony_arrays (enable harmony arrays) --harmony_arrow_functions (enable harmony arrow functions) --harmony (enable all harmony features (except proxies))
=>
がアロー式となるようです。
:testnode$ node --harmony > foo = (x) => {return x * x} [Function] > foo(3) 9
オブジェクトのみをreturnする場合は、カッコでくくるとreturnが不要になります。
> foo = (x) => ({result : x * x}) [Function] > foo(3) { result: 9 } >
関数を実行するときは、引数にカッコをつけないとダメなようです。
> foo 4 SyntaxError: Unexpected number at Object.exports.createScript (vm.js:44:10) at REPLServer.defaultEval (repl.js:117:23) at bound (domain.js:254:14) at REPLServer.runBound [as eval] (domain.js:267:12) at REPLServer.<anonymous> (repl.js:279:12) at REPLServer.emit (events.js:107:17) at REPLServer.Interface._onLine (readline.js:214:10) at REPLServer.Interface._line (readline.js:553:8) at REPLServer.Interface._ttyWrite (readline.js:830:14) at ReadStream.onkeypress (readline.js:109:10)
2引数の場合はアローを重ねるとできます。
> foo = (x) => (y) => {return x * y} [Function] > foo(4)(5) 20
カリー化もできるようです。
> bar = foo(4) [Function] > bar(5) 20 >