关于underscore range函数

群里突然讨论到range函数,干脆读了一遍underscore的range函数。写点注释

 _.range = function(start, stop, step) {
    //if the number of incoming parameters less than two
    if (arguments.length <= 1) {
      stop = start || 0;
      start = 0;
    }
    // step is equal to the third parameters or number 1
    step = arguments[2] || 1;

    //work out how length of the array.
    var length = Math.max(Math.ceil((stop - start) / step), 0);
    var idx = 0;
    //create a new array 
    var range = new Array(length);
    //loop
    while(idx < length) {
      range[idx++] = start;
      start += step;
    }
    //return the new array.
    return range;
  };

用思想来说就是先看传入了几个参数,然后取start,stop,取间隔。然后算新数组的长度应该是多少,循环对数组赋值,然后返回新数组。
PS:
英文越来越烂了,唉,写注释解释都不太会了,有空还是要多复习。愁。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据