計算機科学のブログ

変数と文字列 letを使った変数宣言 IIFE(Immediately Invoked Function Expression)の除去、ブロックスコープ

入門JavaScriptプログラミング (JD Isaacks(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT1(変数と文字列)、LESSON 4(letを使った変数宣言)、4.5(練習問題)、Q4-1の解答を求めてみる。

HTML

<script src="./sample1.js"></script>

コード

window.mylib = {};
{
    let DEFAULT_START = 0;
    let DEFAULT_STEP = 1;

    window.mylib.range = function (start, stop, step) {
        if (!step) {
            step = DEFAULT_STEP;
        }
        if (!stop) {
            stop = start;
            start = DEFAULT_START;
        }
        if (stop < start) {
            let tmp = start;

            start = stop;
            stop = tmp;
        }
        let arr = [];
        for (let i = start; i < stop; i += step) {
            arr.push(i);
        }
        return arr;
    };
}
console.log(mylib);
console.log(mylib.range());
console.log(mylib.range(10));
console.log(mylib.range(1, 10));
console.log(mylib.range(1, 10, 2));

入出力結果(Console)

[Log] {range: function} (sample1.js, line 29)
[Log] [] (0) (sample1.js, line 30)
[Log] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] (10) (sample1.js, line 31)
[Log] [1, 2, 3, 4, 5, 6, 7, 8, 9] (9) (sample1.js, line 32)
[Log] [1, 3, 5, 7, 9] (5) (sample1.js, line 33)