在SO的javascript中,“.split(”“)

时间:2012-03-18 03:56:04

标签: javascript

我已经看过很多成语,其中大部分都是巧妙而合乎逻辑的。但是当我查看SO的javascript来获得关于良好界面设计的一些想法时,我看到了以下一行:

initTagRenderer("".split(" "), "".split(" "));

这真的让我陷入了困境。显然,他们使用两个数组初始化标记渲染器,这两个数组只包含一个空字符串参数(或[""],其中"".split(" ")计算结果为)。那部分我理解(在我自己的代码中做了同样的事情)。但似乎通过一个文字会完成同样的事情。

是否有一些非显而易见的原因,我没有看到新手(对js,而不是编程)?

另外,我确实尝试过搜索,并获得了很多关于split()本身的信息(我已经很清楚了),但不是成语;谷歌搜索双引号是徒劳的。

编辑:这是明显的答案。这部分代码是动态生成的,通常不会在SO上填充。

1 个答案:

答案 0 :(得分:9)

可能有服务器端代码动态填充这些参数,看起来像这样:

initTagRenderer("javascript php".split(" "), "ruby lisp".split(" "));

这个功能是什么,我不知道。但它必须要求一组标记名称,并且生成以空格分隔的列表而不是JS数组文字更容易。

修改

经过一些英勇的调查后,似乎initTagRenderer确实很好地格式化了问号标签。与第一个参数中的名称匹配的标记将被赋予required-tag类,与第二个参数匹配的标记将被赋予moderator-tag类。

据Madmartigan说,它用于meta:

initTagRenderer(
     "bug feature-request discussion support".split(" "),
     "faq status-completed status-declined status-bydesign status-norepro status-reproduced status-planned status-deferred status-review featured community-ads".split(" ")
);

View example


full.js的相关(但缩小)行:

function initTagRenderer(f,c){window.tagRenderer||(window.tagRendererRaw=function(b,g){var g=g||"",e="";g||(f&&-1<$.inArray(b,f)?e=" required-tag":c&&-1<$.inArray(b,c)&&(e=" moderator-tag"));return"<a class='post-tag"+e+"' href='"+g+"/questions/tagged/"+encodeURIComponent(b)+"' title=\"show questions tagged '"+b+"'\" rel='tag'>"+b+"</a>"},window.tagRenderer=function(b,c){return $(tagRendererRaw(b,c))})}