我见过很多成语,一旦解释清楚,其中的大部分都很聪明且合乎逻辑。但是当我查看 SO 的 javascript 以获取有关良好界面设计的一些想法时,我看到了以下行:
initTagRenderer("".split(" "), "".split(" "));
这真的让我大吃一惊。显然,它们使用两个数组初始化标记渲染器,其中只包含一个空字符串参数(或 [""]
,"".split("")
的计算结果) .我理解那部分(在我自己的代码中做了同样的事情)。但似乎传递文字会完成同样的事情。
作为一个新手(对于 js,而不是编程),是否有一些不明显的原因让我没有看到这样做?
此外,我确实尝试搜索,并获得了很多关于 split() 本身的信息(我已经非常了解),但不是习语;在谷歌上搜索双引号是徒劳的。
编辑:这是显而易见的答案。这部分代码是动态生成的,通常不会在 SO 上填充。
最佳答案
可能有服务器端代码动态填充这些参数,看起来像这样:
initTagRenderer("javascript php".split(" "), "ruby lisp".split(" "));
这个函数是做什么的,我不知道。但它必须需要一个标签名称数组,并且生成一个以空格分隔的列表比生成一个 JS 数组文字更容易。
编辑
经过一些英勇的调查,看来 initTagRenderer
确实很好地格式化了问题标签。与第一个参数中的名称匹配的标签被赋予 required-tag
类,与第二个参数匹配的标签被赋予 moderator-tag
类。
根据 Madmartigan 的说法,它用于元数据:
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))})}
关于javascript - SO 的 javascript 中的 "".split( ""),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9755862/