In Coffeescript ist dies unkompliziert:
coffee> a = ['a', 'b', 'program']
[ 'a', 'b', 'program' ]
coffee> [_..., b] = a
[ 'a', 'b', 'program' ]
coffee> b
'program'
Erlaubt es6 etwas Ähnliches?
> const [, b] = [1, 2, 3]
'use strict'
> b // it got the second element, not the last one!
2
> const [...butLast, last] = [1, 2, 3]
SyntaxError: repl: Unexpected token (1:17)
> 1 | const [...butLast, last] = [1, 2, 3]
| ^
at Parser.pp.raise (C:\Users\user\AppData\Roaming\npm\node_modules\babel\node_modules\babel-core\node_modules\babylon\lib\parser\location.js:24:13)
Natürlich kann ich es auf die es5-Art machen -
const a = b[b.length - 1]
Aber vielleicht ist dies ein bisschen anfällig für einen Fehler. Kann der Splat nur das Letzte in der Destrukturierung sein?
...
in es6, insbesondere darauf, dass es nur als letztes bei der Destrukturierung oder in einer Parameterliste verwendet werden kann. Dies ist möglicherweise nicht intuitiv für jemanden, der von coffeescript zu es6 kommt, und daher ist diese Frage möglicherweise nützlich.
[1,2,3].slice(-1)
Sie nicht einmal gleichwertig zerstören können [1,2,3].slice(0, -1)
. Dies sind übliche Operationen. ES6-Destrukturierung ist irgendwie ein Witz!