_ga.utils.getValidColumnGroups = function(a) {
for (var b = [], c = 0, d; d = _ga.metadata.items[c]; ++c)
d = d.attributes.group,
a && (d = _ga.utils.getNormalizedName(d)),
-1 == b.indexOf(d) && b.push(d);
return b
};
而不是过于关注具体什么这个功能是干什么的,
我不知道这个循环将结束的条件语句时是赋值而不是典型的比较运算符?
d = _ga.metadata.items[c]
将与可变
d
在这一行尤其是发生什么情况?var b = [], c = 0, d;
在正常情况下,它会与逗号的最后一条语句分配。但也许这不是在某些情况下的情况。如果不是,前两个任务是没用的。这些线是做什么的?
d = d.attributes.group, a && (d = _ga.utils.getNormalizedName(d)), -1 == b.indexOf(d) && b.push(d);
如果d结束了一个布尔或未定义的值(或一个条件读取为假的任何变型),循环将结束。第二部分,这只是实例,确保我们正在使用正确的范围变量。 – AxelH
@AxelH:这很有道理!随意将其作为答案 – geckob
@ AxelH - 在* for *表达式中使用带* var *的变量声明仅将范围限制到周围的执行上下文。 *让*需要将范围限制为* for *块。 ;-) – RobG