In JavaScript, what does 0 === 4 mean?

I saw the following JavaScript code, and it confused me, since logically 0 will never be 4 or 5:

 if (0 === 4) { // Safari
      safari.self.addEventListener("message", safariMessageListener, false);
 } else if (0 === 5) { // Opera
      opera.extension.onmessage = operaMessageListener;
 }

I will assume that this code works. So the programmer managed somehow to redefine 0 or 0 somehow not to refer to the number 0? Can someone explain this code and why will anyone write such code? What are the advantages of this technique? (except for the confusion of people like me!)

For completeness, this snippet was obtained from the YouTube Center Lubrication Center plug-in. Whose URL is:

https://github.com/YePpHa/YouTubeCenter/wiki/Developer-Version

And the full method:

  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;
    }
  }
+4
source share
1 answer

The source code looks very different:

if (@identifier@ === 4) { // Safari
  safari.self.addEventListener("message", safariMessageListener, false);
} else if (@identifier@ === 5) { // Opera
  opera.extension.onmessage = operaMessageListener;
}

Ant build script, @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>

${indentifier.userscript} .

+9

All Articles