Projekt

Obecné

Profil

Stáhnout (1.08 KB) Statistiky
| Větev: | Revize:
1
var baseToNumber = require('./_baseToNumber'),
2
    baseToString = require('./_baseToString');
3

    
4
/**
5
 * Creates a function that performs a mathematical operation on two values.
6
 *
7
 * @private
8
 * @param {Function} operator The function to perform the operation.
9
 * @param {number} [defaultValue] The value used for `undefined` arguments.
10
 * @returns {Function} Returns the new mathematical operation function.
11
 */
12
function createMathOperation(operator, defaultValue) {
13
  return function(value, other) {
14
    var result;
15
    if (value === undefined && other === undefined) {
16
      return defaultValue;
17
    }
18
    if (value !== undefined) {
19
      result = value;
20
    }
21
    if (other !== undefined) {
22
      if (result === undefined) {
23
        return other;
24
      }
25
      if (typeof value == 'string' || typeof other == 'string') {
26
        value = baseToString(value);
27
        other = baseToString(other);
28
      } else {
29
        value = baseToNumber(value);
30
        other = baseToNumber(other);
31
      }
32
      result = operator(value, other);
33
    }
34
    return result;
35
  };
36
}
37

    
38
module.exports = createMathOperation;
(178-178/634)