我已经看过很多成语,其中大部分都是巧妙而合乎逻辑的。但是当我查看SO的javascript来获得关于良好界面设计的一些想法时,我看到了以下一行:
initTagRenderer("".split(" "), "".split(" "));
这真的让我陷入了困境。显然,他们使用两个数组初始化标记渲染器,这两个数组只包含一个空字符串参数(或[""]
,其中"".split(" ")
计算结果为)。那部分我理解(在我自己的代码中做了同样的事情)。但似乎通过一个文字会完成同样的事情。
是否有一些非显而易见的原因,我没有看到新手(对js,而不是编程)?
另外,我确实尝试过搜索,并获得了很多关于split()本身的信息(我已经很清楚了),但不是成语;谷歌搜索双引号是徒劳的。
编辑:这是明显的答案。这部分代码是动态生成的,通常不会在SO上填充。
答案 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(" ")
);
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))})}