define([], function() { /** Used as a safe reference for `undefined` in pre-ES5 environments. */ var undefined; /** * Creates a function that performs a mathematical operation on two values. * * @private * @param {Function} operator The function to perform the operation. * @returns {Function} Returns the new mathematical operation function. */ function createMathOperation(operator) { return function(value, other) { var result; if (value === undefined && other === undefined) { return 0; } if (value !== undefined) { result = value; } if (other !== undefined) { result = result === undefined ? other : operator(result, other); } return result; }; } return createMathOperation; });