【发布时间】:2016-05-04 04:04:42
【问题描述】:
有一个if语句
if ((sliding || "Window" == type) &&
nbCasement % 2 != 1 || sliding || "Garage" == type || f({
name: "hinge"
}),
nbCasement > 0 && !sliding && f({
name: "side"
}),
d && apiProperty)
&&|| 和 ,
我认为这段代码是一样的:
f({
name: "hinge"
});
f({
name: "side"
});
if ((sliding || "Window" == type) &&
nbCasement % 2 != 1 || sliding || "Garage" == type ||
nbCasement > 0 && !sliding &&
d && apiProperty)
但结果和我想的不一样。
这个语句是如何工作的?
f({name:xxx}) 运行的条件是什么?
f 定义为
var e = []
, f = function(a) {
d && d.blackList && d.blackList[a.name] || e.push(a)
};
【问题讨论】:
-
一些上下文可能对我们有所帮助...
-
如果您解释一下为什么您认为这些代码 sn-ps 是等价的,这也会有所帮助,以便更容易判断您的思维过程的哪一部分是错误的。例如,为什么你认为
f()调用都会一直运行(并且它们的返回值会被丢弃)? -
你在哪里找到这个代码?在一些缩小的脚本中?这将解释格式。
-
@Bergi 是的。从缩小的脚本。很难理解
-
@Juhana 因为从这里开始 stackoverflow.com/a/5348007/1204882 。我认为
f()总是运行。