querySelectorAll
は配列のようなものではありますが、配列ではないものが返されることは承知しています。だから私のコードで私はES6を使用して、それを反復してい構文を広める:私はクロームデベロッパーツールのコンソールにその正確なコードを記述する場合、期待どおり配列スプレッド表記法はBabelのNodeListsでどのように動作するのでしょうか?
const things = document.querySelectorAll('.things');
[...things].forEach(thing => thing.do());
、それが動作します。しかし、バベルは、ES5にそれをtranspilingさ:
var things = document.querySelectorAll('.things');
[].concat(things).forEach(function(thing) { thing.do() });
[].concat(things)
がが[...things]
と同じことをしていません。予想される結果はノードの配列ですが、concat
はNodeListsの配列を返します。したがって、thing.do()
を呼び出すと、NodeListにはdo
メソッドがないため、エラーになります。
代わりに、NodeListでArrayメソッドを使用するES5に優しい方法は、のように先にslice
を呼び出すことです。
バベルは配列の広がりを利用するたびにconcat
に変わるのは間違っていますか?それとも、新しいバージョンや設定がありますか?
何のブラウザであなたがサポートする必要があるのですか? –
Babelのプリセットで 'loose:true'を使用しているように聞こえるので、探している動作が無効になります。 – loganfsmyth
常緑樹ブラウザのみサポートする必要があります –