在SO的javascript中,".split("")

bkc*_*rad 13 javascript

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

initTagRenderer("".split(" "), "".split(" "));
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

ben*_*sch 9

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

initTagRenderer("javascript php".split(" "), "ruby lisp".split(" "));
Run Code Online (Sandbox Code Playgroud)

那个功能做了什么,我不知道.但它必须要求一组标记名称,并且生成以空格分隔的列表而不是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(" ")
);
Run Code Online (Sandbox Code Playgroud)

查看示例


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))})}
Run Code Online (Sandbox Code Playgroud)

  • 它在meta上用于必需和仅限mod的标签(红色标签):`initTagRenderer("bug feature-request discussion support".split(""),"faq status-completed status-rejected status-bydesign status -norepro status -reproduced status-planned status -deferred status-review features community-ads".split(""));` (4认同)
  • 我认为这会为问题提供标签,例如'javascript'或'stackoverflow.com' (3认同)