Javascript 在react组件外部定义的变量是否被视为全局变量?
我知道使用全局变量是一种糟糕的做法。我还知道在javascript中,函数外部定义的变量被认为是全局变量。对于在react组件(无论是功能组件还是类)外部定义的变量也是如此。它看起来是否定的,因为js库中的一些css使用这样的语法,但我不明白为什么它不是全局的。例如:Javascript 在react组件外部定义的变量是否被视为全局变量?,javascript,reactjs,Javascript,Reactjs,我知道使用全局变量是一种糟糕的做法。我还知道在javascript中,函数外部定义的变量被认为是全局变量。对于在react组件(无论是功能组件还是类)外部定义的变量也是如此。它看起来是否定的,因为js库中的一些css使用这样的语法,但我不明白为什么它不是全局的。例如: import ... const styles = ... const MyComponent = () => { ... } export default MyComponent 这里的样式是全局变量吗?为什
import ...
const styles = ...
const MyComponent = () => {
...
}
export default MyComponent
这里的样式是全局变量吗?为什么或者为什么不?在React中,就像在许多现代Javascript框架中一样,它们使用脚本模块,对每个脚本进行沙箱处理。这意味着您不能定义全局,除非您专门为
窗口
对象指定了某些内容
const local = {};
window.global = {};
通过将脚本标记的类型设置为module
,可以定义脚本模块:
<script type="module" src="myscript.js"></script>
您应该会看到react创建的结果HTML包含这些脚本类型。阅读有关模块的更多信息,但简而言之,您定义了常量
样式,之后将不导出这些样式。因此,除本模块外,您将无法在其他任何地方使用它。@AntoanElenkov谢谢。这也适用于测试文件吗?例如,在jest中,您没有导出任何东西,因此component.test.js文件也是一个模块,或者在任何描述块或任何功能块之外定义的变量(例如,在文件顶部)会被视为全局变量吗?@Isdmt,您的测试函数不会被导出,因为当测试引擎执行它们时,您不会在除此文件之外的任何地方使用它们。如果在函数外部定义变量,则该变量将仅在该文件中可见,而且它不是全局变量,也不存在这样的情况。如果要使用全局变量,可以定义并导出一个全局对象,其中可以指定所有全局数据。但同样,您应该将这个全局对象导入到任何您想使用它的地方。如果不够清楚,我可以用一个例子写一个答案,如果你想让我做,请告诉我。谢谢你的回答。我在上面的评论中问了这个问题,但也想在这个答案下问:这也适用于测试文件吗?例如,在jest中,您没有导出任何内容,因此component.test.js文件也是一个模块,或者在任何描述块或任何功能块(例如在文件顶部)之外定义的变量是否被视为全局变量?