Projekt

Obecné

Profil

Stáhnout (1.13 KB) Statistiky
| Větev: | Revize:
1 3a515b92 cagy
var Symbol = require('./_Symbol'),
2
    arrayMap = require('./_arrayMap'),
3
    isArray = require('./isArray'),
4
    isSymbol = require('./isSymbol');
5
6
/** Used as references for various `Number` constants. */
7
var INFINITY = 1 / 0;
8
9
/** Used to convert symbols to primitives and strings. */
10
var symbolProto = Symbol ? Symbol.prototype : undefined,
11
    symbolToString = symbolProto ? symbolProto.toString : undefined;
12
13
/**
14
 * The base implementation of `_.toString` which doesn't convert nullish
15
 * values to empty strings.
16
 *
17
 * @private
18
 * @param {*} value The value to process.
19
 * @returns {string} Returns the string.
20
 */
21
function baseToString(value) {
22
  // Exit early for strings to avoid a performance hit in some environments.
23
  if (typeof value == 'string') {
24
    return value;
25
  }
26
  if (isArray(value)) {
27
    // Recursively convert values (susceptible to call stack limits).
28
    return arrayMap(value, baseToString) + '';
29
  }
30
  if (isSymbol(value)) {
31
    return symbolToString ? symbolToString.call(value) : '';
32
  }
33
  var result = (value + '');
34
  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
35
}
36
37
module.exports = baseToString;