【发布时间】:2015-05-26 18:31:57
【问题描述】:
我有一段javascript代码:
for (
m = a[1],
s = a[2],
c.hash_match = i.replace(m, ""),
o.lastIndex = 0;
a = o.exec(s);
) {
e[a[1]] && (c[e[a[1]]] = c[e[a[1]]] || decodeURIComponent(a[2]));
}
我认为是如何工作的:
m = a[1];
s = a[2];
c.hash_match = i.replace(m, "");
o.lastIndex = 0;
while(a = o.exec(s))
{
if(e[a[1]])
{
if(!c[e[a[1]]])
{
c[e[a[1]]] = decodeURIComponent(a[2]);
}
}
}
据我了解,for 循环中第一个分号之前的四个运算符可以放在外面,因为 for 循环不使用这个逗号分隔的赋值列表返回的结果。
当 o.exec(s) 根据 == 运算符(而不是 ===)的定义为 false 时,for 循环会中断。
在这个question中已经向我解释了内部代码结构,我很确定,但是请确认这部分。
我已经进行了一些测试并检查了一些行为,但需要确保我的解释是 100% 正确的,因为它是大型 js 脚本的一部分,我不确定我的测试工作是否足以重构后保留代码逻辑。那么,这两个 sn-ps 是否相等?
【问题讨论】:
-
是的,据我所知,这两者是相等的。为了澄清:
a = o.exec(s)将o.exec(s)分配给a并使用o.exec(s)的结果(真实性)。
标签: javascript syntax minify