正如您所見,here(中文),此代碼可能用於測試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);
}
...
}
由於0 === 0
是真實的,它不會叫comparefn
。
在jQuery的情況下,它不會將全局變量baseHasDuplicate
設置爲false
。
編輯:如果你瀏覽灒的源代碼,here例如(進入「灒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;
});
看起來很神祕!
這就是有點苛刻考慮有簡單的方法來檢查 – Dani 2010-08-10 03:10:18
哦,有編程無處不在。有時候人們真的很喜歡做事的壞方法:) – 2010-08-10 03:11:18
@Dani:確實!但是,代碼可能用於其他方面......從「Javascript忍者」中聽到這將非常棒。 – 2010-08-10 03:14:14