| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | 'use strict'var isNumber = require('lodash.isfinite')/** * @id isNumberLike * @function isNumberLike * Checks whether provided parameter looks like a number * @param {any} val - the value to check * @returns {boolean} looksLikeNumber - `true` if `val` looks like a number, `false` otherwise */module.exports = function isNumberLike (val) {  // fail  if (val === null || val === void 0 || val === false) {    return false  }  if (typeof val === 'function' || val instanceof Array) {    return false  }  var length = val.length  if (!length) {    return isNumber(val)  }  var i = 0  // charAt is faster in v8  if (val.charAt(0) === '-') {    if (length === 1) {      // fail do it      return false    }    i = 1  }  var foundE = false  var foundPeriod = false  for (; i < length; i++) {    var c = val.charAt(i)    // bit range is outside number range    if ((c <= '/' || c >= ':')) {      if (c === 'e') {        if (foundE) {          return false        }        foundE = true      } else if (c === '.') {        if (foundPeriod) {          return false        }        foundPeriod = true      } else {        return false      }    }  }  return true}
 |