是我对这个条件值的理解吗?赋值正确吗?

我同事的脚本充满了这样的代码:


(window.WORLD_CLOCK || (window.WORLD_CLOCK = WORLD_CLOCK))();

现在,WORLD_CLOCK在此行之前定义了一个名为的函数。


根据我的假设,这会检查window对象是否包含一个名为 的键WORLD_CLOCK,如果它包含( true) 它返回该函数,如果它不包含 ( false) 它分配WORLD_CLOCK给 window 并WORLD_CLOCK从该分配返回函数。


外括号捕获此函数,第三对(空)括号调用此函数。


这个假设正确吗?


如果是这样,用以下代码替换该行是否合适:


if (typeof WORLD_CLOCK === "function") {

  if (!window.hasOwnProperty("WORLD_CLOCK")) {

    window.WORLD_CLOCK = WORLD_CLOCK;

  }

  window.WORLD_CLOCK();

}

谢谢。


斯蒂芬大帝
浏览 127回答 2
2回答

繁星coding

我认为你同事的代码假设总是有一个 WORLD_CLOCK 函数,步骤是:如果window没有 WORLD_CLOCK 属性,则将 WORLD_CLOCK 函数分配给具有相同名称的属性从window对象调用属性 WORLD_CLOCK所以,也许重写可能是这样的:if (!window.hasOwnProperty("WORLD_CLOCK") {  window.WORLD_CLOCK = WORLD_CLOCK}window.WORLD_CLOCK()

九州编程

我认为它可能更像是(不是说您会以这种方式完成它只是更直接的翻译)。if (window.WORLD_CLOCK) {  window.WORLD_CLOCK();} else {  window.WORLD_CLOCK = WORLD_CLOCK;  window.WORLD_CLOCK();}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript