代码之家  ›  专栏  ›  技术社区  ›  phoebus

将函数从javascript模块导出到窗口命名空间

  •  4
  • phoebus  · 技术社区  · 1 年前

    我知道模块的特征/目标之一是,内部定义的变量/函数不能从脚本外部访问。但是,如果我想导出一个特定的函数以便在全局范围内使用,我将如何做到这一点?正如我在其他帖子中所读到的那样,仅仅分配给窗口似乎不起作用:

    在里面 index.html

    <script type="module">
       const add = (a, b) => a + b;
       window.add = add;
    </script>
    <script>
       console.log(window.add(1, 2));
    </script>

    中的结果 Uncaught TypeError: window.add is not a function

    1 回复  |  直到 1 年前
        1
  •  3
  •   Raed    1 年前

    这是因为“模块”脚本是第二个被解释的。添加控制台日志可以验证这一点。

    <script type="module">
      var add = (a, b) => a + b;
      window.add = add;
      console.log("This prints second:", window.add)
    </script>
    
    <script>
      console.log("This prints first:", window.add)
      console.log(window.add(1, 3));
    </script>