在JavaScript中,0 === 4是什么意思?
问题描述:
我看到了下面的JavaScript代码,它让我感到困惑,因为从逻辑0将永远4或5:在JavaScript中,0 === 4是什么意思?
if (0 === 4) { // Safari
safari.self.addEventListener("message", safariMessageListener, false);
} else if (0 === 5) { // Opera
opera.extension.onmessage = operaMessageListener;
}
我会认为这个代码的工作。那么程序员是否设法以某种方式重新定义0,或者0不知道如何指向数字0?任何人都可以解释这个代码,为什么会有人这样的代码?这种技术的优点是什么? (除了令人困惑的人喜欢我!)
为了完整起见,此片段来自YouTube中心Grease Monkey插件。它的网址是:
https://github.com/YePpHa/YouTubeCenter/wiki/Developer-Version
而完整的方法是:
function initListeners() {
if (support.CustomEvent) {
window.addEventListener("ytc-content-call", eventListener, false);
} else {
window.addEventListener("message", messageListener, false);
}
window.addEventListener("unload", windowUnload, false);
if (0 === 4) { // Safari
safari.self.addEventListener("message", safariMessageListener, false);
} else if (0 === 5) { // Opera
opera.extension.onmessage = operaMessageListener;
}
}
答
的source code看起来相当不同:
if (@[email protected] === 4) { // Safari
safari.self.addEventListener("message", safariMessageListener, false);
} else if (@[email protected] === 5) { // Opera
opera.extension.onmessage = operaMessageListener;
}
只是有一个Ant build script它取代这个@[email protected]
与${indentifier.userscript}
:
<target name="copy-userscript-meta">
<copy todir="${buildDir}">
<fileset dir="${src.meta}/" />
</copy>
<antcall target="tokenreplace" />
<replace dir="${buildDir}" value="${indentifier.userscript}" token="@[email protected]" encoding="${encoding}" />
</target>
${indentifier.userscript}
定义在同一个文件中。
https://github.com/YePpHa/YouTubeCenter/blob/85a3ff38dc7523757ee449903026ec270d8fb387/experiments/inject-everything.js#L467-471 – Bergi 2014-09-01 15:57:31