我看到以下JavaScript代码并且它让我感到困惑,因为从逻辑上0永远不会是4或5:
if (0 === 4) { // Safari
safari.self.addEventListener("message", safariMessageListener, false);
} else if (0 === 5) { // Opera
opera.extension.onmessage = operaMessageListener;
}
Run Code Online (Sandbox Code Playgroud)
我将假设此代码有效.那么程序员是否设法以某种方式重新定义0或者0不知何故不是指数字0?任何人都可以解释这个代码,为什么有人这样编码?这种技术的优点是什么?(除了让像我这样迷惑的人!)
为了完整起见,此片段来自YouTube Center Grease Monkey插件.其URL是:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
该源代码看起来相当不同:
if (@identifier@ === 4) { // Safari
safari.self.addEventListener("message", safariMessageListener, false);
} else if (@identifier@ === 5) { // Opera
opera.extension.onmessage = operaMessageListener;
}
Run Code Online (Sandbox Code Playgroud)
只是有一个Ant构建脚本,它取代这个@identifier@有${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="@identifier@" encoding="${encoding}" />
</target>
Run Code Online (Sandbox Code Playgroud)
${indentifier.userscript} 在同一个文件中定义.
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |