こんにちは。ずぶのスプレッド構文素人です。
spreadとは
「広げる」という意味らしいです。ジーニアス英和辞典第5版より。
スプレッド構文とは
基本的な機能は、くっついたオペランドの「展開」です~~、ということで理解しました~~。
配列やオブジェクトの中身を個別に展開してくれます。なるほどスプレッド。
ただ、関数の仮引数や分割代入に使われたときには、挙動が「展開」ではなく「集約」になるみたいです。
可変長引数にもできますね。
// 仮引数をスプレッド構文にする
let myFunc = function (...arg) {
console.log(arg);
};
// 複数の引数を渡すと・・・
myFunc('a', 'b', 'c');
// 一つの配列に「集約」される
// ['a', 'b', 'c']
// 分割代入と合わせて使う
let src = ['a', 'b', 'c', 'd'];
let [x, y, ...other] = src;
// x -> 'a'
// y -> 'b'
// other -> ['c', 'd']
スプレッド演算子
...
がスプレッド演算子(らしい)。オペランドの前につくから単項演算子の仲間なんでしょうね知らんけど。
諸元
仕事で触っているのも自身で持っている本も古きJavaScript(ES5)で、改めて現代に追いつこうと「独習JavaScript」を読ませていただいてます。
Reactをちょろっと触ったなどはしていたので、なんとなくこういうことができるんだなあ、とぼーっとしていましたが体系的に基礎を学ぶことで最終的な学習コストができれば…と願ってやまない。