Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么不是';下划线是否与其类型检查一致?_Javascript_Underscore.js - Fatal编程技术网

Javascript 为什么不是';下划线是否与其类型检查一致?

Javascript 为什么不是';下划线是否与其类型检查一致?,javascript,underscore.js,Javascript,Underscore.js,例如,它有isNumber(),它使用toString来检测原始数字和“装箱”数字 但稍后在其代码中,它将使用不会检测装箱值的typeof 我知道typeof速度更快,但它会丢失装箱的值 这个问题也在我的代码库中提出,以及我为什么要问这个问题。大意是“如果你不使用自己的功能,为什么其他人会使用” 这里有没有我遗漏的东西: 该行是一个方法的一部分,该方法要求将布尔值或数字作为其第三个参数 _.indexOf = function(array, item, isSorted) { if

例如,它有
isNumber()
,它使用toString来检测原始数字和“装箱”数字

但稍后在其代码中,它将使用不会检测装箱值的typeof

我知道typeof速度更快,但它会丢失装箱的值


这个问题也在我的代码库中提出,以及我为什么要问这个问题。大意是“如果你不使用自己的功能,为什么其他人会使用”

这里有没有我遗漏的东西:


该行是一个方法的一部分,该方法要求将
布尔值
数字
作为其第三个参数

_.indexOf = function(array, item, isSorted) {
    if (array == null) return -1;
    var i = 0, length = array.length;
    if (isSorted) {
      if (typeof isSorted == 'number') {
        i = isSorted < 0 ? Math.max(0, length + isSorted) : isSorted;
      } else {
        i = _.sortedIndex(array, item);
        return array[i] === item ? i : -1;
      }
    }
    for (; i < length; i++) if (array[i] === item) return i;
    return -1;
  };
\uuxof.indexOf=函数(数组、项、isSorted){
if(array==null)返回-1;
var i=0,length=array.length;
如果(已排序){
if(typeof isSorted=='number'){
i=isSorted<0?数学最大值(0,长度+isSorted):isSorted;
}否则{
i=uu.sortedIndex(数组,项);
返回数组[i]==项目?i:-1;
}
}
对于(;i

如果你给它传递了一些意想不到的东西(比如一个盒装的数字),它会呕吐,这是你的问题,不是他们的问题。

下划线根本不使用
(它只定义了它),我认为这是相当一致的。装箱数字是一种反模式。“如果你不使用自己的函数,为什么其他人会使用”是我问题的核心。下划线似乎不使用
isNumber()
_.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) {
    _['is' + name] = function(obj) {
      return toString.call(obj) === '[object ' + name + ']';
    };
  });
_.indexOf = function(array, item, isSorted) {
    if (array == null) return -1;
    var i = 0, length = array.length;
    if (isSorted) {
      if (typeof isSorted == 'number') {
        i = isSorted < 0 ? Math.max(0, length + isSorted) : isSorted;
      } else {
        i = _.sortedIndex(array, item);
        return array[i] === item ? i : -1;
      }
    }
    for (; i < length; i++) if (array[i] === item) return i;
    return -1;
  };