可変長の引数が難しくてわかりません。

下記の部分を記載しなくて済むのがメリットのようですが、難しくて初心者にはわかりません。

for (var _len = arguments.length, arg = Array(_len), _key = 0; _key < _len; _key++) {
  arg[_key] = arguments[_key];
}

>>>

可変長の引数 引数の冒頭に...と記述することにより引数を配列として取得することができます。

var bar = function(...arg){
  console.log(arg);
  console.log(Array.isArray(arg));
};
bar(1,2,3,4);

これは以下のようにコンパイルされます。

var bar = function bar() {
  for (var _len = arguments.length, arg = Array(_len), _key = 0; _key < _len; _key++) {
    arg[_key] = arguments[_key];
  }

  console.log(arg);
  console.log(Array.isArray(arg));
};
bar(1, 2, 3, 4); このコードを実行した場合はコンソールに以下のようなログが出力されます。

[1, 2, 3, 4]
true

http://blog.webcreativepark.net/2015/10/29-165605.html

初心者にもわかるように解説していただけるとありがたいです。
もしかして上級者になるまで無縁なものなのでそれまで無視していれば良いのでしょうか?