Javascript 为什么第二个函数参数在注释块中?只是好奇
我发现了这段代码,我不理解参数中注释块的用途:Javascript 为什么第二个函数参数在注释块中?只是好奇,javascript,function,parameters,comments,Javascript,Function,Parameters,Comments,我发现了这段代码,我不理解参数中注释块的用途: if (!Array.prototype.some) { Array.prototype.some = function(fun /*, thisp*/) { var len = this.length; if (typeof fun != "function") throw new TypeError(); var thisp = arguments[1]; for (var i = 0; i
if (!Array.prototype.some)
{
Array.prototype.some = function(fun /*, thisp*/)
{
var len = this.length;
if (typeof fun != "function")
throw new TypeError();
var thisp = arguments[1];
for (var i = 0; i < len; i++)
{
if (i in this && fun.call(thisp, this[i], i, this))
return true;
}
return false;
};
}
如果定义了
Array.prototype.some
,则原始方法具有第二个参数,即thisp
,但由于未定义该参数,因此作者定义了自己的方法来模拟该功能
作者希望调用方传递第二个参数,即thisp
。
HTH.实现了
数组.prototype。Firefox内置的一些具有1的算术数,即它接受一个参数。为了实现第二个可选参数而不改变算术性,替换代码改为通过参数[1]
访问第二个参数
实际上,我不知道EcmaScript规范对Array.prototype的arity有什么规定。有些您是对的,它应该是一个参数,因为1。在函数中使用函数参数
是和2。它是硬连线到函数中的,尽管它可以在实际循环中保持未定义。我认为,这种方法不应该出现在生产代码中。通过进一步测试,我们不清楚第二个参数究竟做了什么。这是一只奇怪的鸭子,但也许我错过了什么。你能问问代码的原始作者吗?伙计,这只是一个评论!它没有意义,它就在那里!谁知道他想用这个参数做什么?看来这个问题最好直接问到相关代码的作者。。。[编辑添加:哦,看,其他人先到了那里,也说了同样的话。我将把这个放在这里,提醒自己在评论之前刷新:-)。@Gareth:我的印象是,现在在你打字时刷新…在这种情况下,我似乎没有这样做。是的,但他可以保存一行代码来避免这种情况。对我来说不合理的行为。:)@幸运的是,看看这个。
var thisp = arguments[1];