【问题标题】:Unused Functions Not Recognized In Window未在窗口中识别的未使用功能
【发布时间】:2022-01-23 13:25:53
【问题描述】:

在 ReactJS 中工作时,我遇到了一个问题,即“未使用”的导入函数无法被程序识别,并且我认为没有被添加到窗口中。

就我而言,我试图能够从其他文件导入函数,然后通过字符串名称调用它们。

例如)

import {myFunction} from '../otherFile';

functionNameString = 'myFunction'
window[functionNameString]()       //call function by it's string name

//ERROR: window[functionNameString] is not a function

在不更改上述语法的情况下,我找到了两种解决方法:

  1. 将实际函数添加到与window[functionNameString]() 调用相同的文件中
  2. 明确地将函数分配给我文件顶部的窗口,例如window.myFunction = myFunction

我试图避免第一种情况以使此文件更短,但也不明白为什么我需要将函数显式分配给窗口,如第二种情况所示(以及为什么定义函数在同一个文件中不需要这个)

总的来说,我的问题是如何避免这种显式分配并使这些导入的函数可以从导入中调用(或更短的语法)?像这样分配对于一个或两个函数来说很好,但我正在考虑从另一个文件中导入 15 个函数,这会使以这种方式工作的事情变得混乱。谢谢!

【问题讨论】:

  • 导入的东西不继续window

标签: javascript node.js reactjs function


【解决方案1】:

模块有自己的范围,它们不在全局范围内,并且导入是作为模块范围内的绑定创建的,而不是全局的。这至少是模块的一半:不再让一切都全球化。

总的来说,我的问题是如何避免这种显式分配并使这些导入的函数可调用?

它们可调用的。 myFunction() 将在您的示例代码中调用您的函数。 window 没有任何理由参与其中。

如果出于某种原因需要在字符串中通过名称来引用它们,可以将它们放在对象中:

const functions = {
    myFunction,
    // ...
};

那么functions[functionNameString]() 就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多