Di coffeescript ini langsung:
coffee> a = ['a', 'b', 'program']
[ 'a', 'b', 'program' ]
coffee> [_..., b] = a
[ 'a', 'b', 'program' ]
coffee> b
'program'
Apakah es6 memungkinkan sesuatu yang serupa?
> 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)
Tentu saja saya bisa melakukannya dengan cara es5 -
const a = b[b.length - 1]
Tapi mungkin ini sedikit rentan terhadap satu kesalahan. Bisakah percikan hanya menjadi hal terakhir dalam penghancuran?
...
di es6, terutama bahwa ini hanya dapat digunakan sebagai hal terakhir saat merusak atau dalam daftar parameter. Ini berpotensi berlawanan dengan intuisi seseorang yang masuk ke es6 dari coffeescript dan dengan demikian pertanyaan ini berpotensi berguna.
[1,2,3].slice(-1)
Anda bahkan tidak dapat merusak setara dengan [1,2,3].slice(0, -1)
. Ini adalah operasi umum. Penghancuran ES6 entah bagaimana adalah lelucon!