JavaScriptでrange

MDNに記載されていたコードです。
stepはデフォルト引数を1にしておいた方がより便利ですね。
使用頻度低いなら3つともデフォルト引数で即時関数なども。
Pythonのようにstopの値を含まない方が良いのでしょうかね。
stopのみ引数とstepが零の場合を配慮したコードも併記する。

  // MDN
  const rangeMdns = (start, stop, step) => Array.from({ length: (stop - start) / step + 1 }, (_, i) => start + i * step);
  console.log(rangeMdns(1, 10, 2));

  // Default parameters: step = 1
  const range = (start, stop, step = 1) => Array.from({ length: (stop - start) / step + 1 }, (_, i) => start + i * step);
  console.log(range(1, 10));
  console.log(range(1, 10, 2));
  console.log(range(0, 10, 2));
  console.log(range(10, 0, -2));
  console.log(range(5, -5, -2));
  console.log(range(-5, 5, 2));

  // IIFE (Immediately Invoked Function Expression)
  console.log(((start = 1, stop = 10, step = 2) => Array.from({ length: (stop - start) / step + 1 }, (_, i) => start + i * step))());

  // (positive step) => r[i] < stop.
  // (negative step) => r[i] > stop.
  const rangeofPython = (start, stop, step = 1) => Array.from({ length: (stop - Math.sign(step) - start) / step + 1 }, (_, i) => start + i * step);
  console.log(rangeofPython(1, 10));
  console.log(rangeofPython(1, 10, 2));
  console.log(rangeofPython(0, 10, 2));
  console.log(rangeofPython(10, 0, -2));
  console.log(rangeofPython(5, -5, -2));
  console.log(rangeofPython(-5, 5, 2));

  // Take care of stop only.
  // Take care of step zero.
  const rangePythonish = (...args) => {
    let result = [];
    if (args[2] === 0) throw new RangeError('step is zero');
    result = !(args.length === 1) ? result : rangeofPython(0, args[0]);
    result = !(args.length === 2) ? result : rangeofPython(...args);
    result = !(args.length === 3) ? result : rangeofPython(...args);
    return result;
  };
  console.log(rangePythonish());
  console.log(rangePythonish(0));
  console.log(rangePythonish(10));
  console.log(rangePythonish(1, 10));
  console.log(rangePythonish(1, 10, 2));

あとがき

ノンプログラマーの素人が記述をしたコードです。
狭い利用範囲と少ない利用頻度での確認ですので、
記載内容に間違いや勘違いがあるかもしれません。
上記内容を参照の際は自己責任でお願い致します。

Reference

連番の生成(範囲指定)
Sequence generator (range)

How to create an array containing 1...N
How to create an array containing 1...N : answer
Does JavaScript have a method like "range()" to generate a range within the supplied bounds?
Does JavaScript have a method like "range()" to generate a range within the supplied bounds? : answer