这个(无用的?)javascript代码有什么作用?

Dan*_*ani 7 javascript jquery

在调试使用jQuery的javascript代码时,我发现了以下代码:

[0, 0].sort(function()
{
    baseHasDuplicate = false;
    return 0;
});
Run Code Online (Sandbox Code Playgroud)

通过我对javascript的理解,这段代码将对包含两个零的数组进行排序,并使用比较函数,该函数将始终设置一个全局变量,并返回相等的效果baseHasDuplicate = false;.
来自一个有价值的来源,我想我错过了一些东西.我错过了什么或这是一个编程失败?

Bru*_*eis 12

正如您在此处看到的(中文),此代码可能用于测试Chrome.编辑:请参阅下面的完整故事 ..

正如文章中所解释的那样,Chrome会优化".sort(...)"方法,使[0, 0].sort(...)调用不会执行给定的比较函数.

从文章中,Chrome的".sort(...)"实现类似于:

function sort(comparefn) {
  var custom_compare = (typeof(comparefn) === 'function');
  function Compare(x,y) {
    if (x === y) return 0;
    if (custom_compare) {
      return comparefn.call(null, x, y);
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

事实上0 === 0,它不会打电话comparefn.

在jQuery的情况下,它不会将全局变量设置baseHasDuplicatefalse.


编辑:如果你浏览灒的源代码,在这里例如(进入"灒CSS选择器引擎"下的黄色区域,被称为"灒变量"),你会发现下面的解释:

var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
        done = 0,
        toString = Object.prototype.toString,
        hasDuplicate = false,
        baseHasDuplicate = true;

// Here we check if the JavaScript engine is using some sort of
// optimization where it does not always call our comparision
// function. If that is the case, discard the hasDuplicate value.
//   Thus far that includes Google Chrome.
[0, 0].sort(function(){
        baseHasDuplicate = false;
        return 0;
});     
Run Code Online (Sandbox Code Playgroud)

看起来神秘莫测!

  • 考虑到有简单的方法可以检查,这有点苛刻 (2认同)
  • 哦,到处都有编程失败。有时人们真的很喜欢这种糟糕的做事方式:) (2认同)