我一直在浏览Google Analytics(分析),并且遇到了此功能(为了方便阅读,它的外观精美):
ha = function(a) {
var b = [];
if (Array.prototype.indexOf) return a = b.indexOf(a), "number" ==
typeof a ? a : -1;
for (var c = 0; c < b.length; c++)
if (b[c] === a) return c;
return -1
},
这看起来像Array.prototype.indexOf
的polyfill。问题是,没有var b = this;
,而是您期望的var b = [];
。我找不到任何不会返回-1
的情况。
上一次我在Google Analytics(分析)中发现类似的内容时,我刚刚犯了一个错误,并且它实际上可以正常工作。但是...我真的看不到我错了。
此代码有作用吗?还是只是无条件返回-1
?
用于测试的沙盒:
var ha = function(a) {
var b = [];
if (Array.prototype.indexOf) return a = b.indexOf(a), "number" ==
typeof a ? a : -1;
for (var c = 0; c < b.length; c++)
if (b[c] === a) return c;
return -1
};
<input id="input" value="ha(5);" /><button onclick="var v=document.getElementById('input').value;console.log(v,eval(v));">Run</button>