Bind

by Ivan Gerasimenko

JavaScript

var log = function (msg) { console.log(msg); };

function checkIsInNumericRange (x, y, value) {
    if (isNaN(value))
       //typeof value !== 'number')
        return false; // may be error???
    else
        return (value >= x && value <= y);
}

log('Checking range with 3 arguments. Range 5-10');
log( '11: '+checkIsInNumericRange(5,10,11) );
log( '7:  '+checkIsInNumericRange(5,10,7) );

// we can have several clones of one function with bounded arguments and/or context
var isIn5to10Range = checkIsInNumericRange.bind(null, 5, 10);
log('Checking range with 1 argument. Range 5-10');
log( '7:  '+isIn5to10Range(7) );
log( '13: '+isIn5to10Range(13) );

var isIn50to100Range = checkIsInNumericRange.bind(null, 50, 100);
log('Checking range with 1 argument. Range 50-100');
log( '70: '+isIn50to100Range(70) );
log( '13: '+isIn50to100Range(13) );

// http://habrahabr.ru/post/199456/