I don't understand how does this code work. Can someone point me in the right direction on how to use ? and : in for loops? What do they mean?
var range = function(start, end, step) {
    var arr = [];
    for (var i = start; step > 1 || step === undefined ? i <= end : i >= end; step ? i = i + step : i++) {
        arr.push(i);
    }
    return arr;
};
 
     
    