gpt4 book ai didi

Javascript 文件或模块范围内的变量

转载 作者:行者123 更新时间:2023-12-03 02:54:09 26 4
gpt4 key购买 nike

如果我错了,请纠正我,函数 require() 以某种方式导入 .js 文件,并将其复制到当前文档中,因此如果 var name 都在两个模块中,第二个模块会覆盖第一个模块吗?
以及如何定义仅限文件范围的变量

请注意,我想在 .js 文件中的任何函数之外定义变量,而不是在 全局范围 中定义变量

解决方案是什么,使用关键字var是否会影响变量作用域,在javascript<中定义除function之外的作用域module 对象可用于在一个文件中定义私有(private)变量

module1.js

var name = 'i am module 1' 

foo = () => console.log(name)

module.exports = foo

module2.js

var name = 'i am module 2' 

foo = () => console.log(name)

module.exports = foo

ma​​in.js

const module1 = require('./module1')
const module2 = require('./module2')

module1() // "i am module 1" or "i am module 2"?
module2() // "i am module 2"

最佳答案

在 javascript 中,当您直接在“.html”文件中加载 .js 文件时,在函数外部声明的变量将在全局范围内注册。为了防止这种情况,人们开始使用 IIFE 函数并将单个文件包装在 IIFE 中。但在现代 Javascript 中,您可以像我们在 Nodejs 中使用的那样使用模块和模块加载器来加载这些文件。现在现代浏览器支持ECMAScript模块,您可以直接使用它们。

使用模块的主要好处是您不必使用 IIFE 函数来阻止变量在全局范围内注册。现在,该文件中声明的每个变量仅对该文件是私有(private)的,除非您将其导出。

例如:模块1.js

var name = 'my name';

function getName(){
return name;
}

module.exports = {
getName
}

在上面的示例中,name对此文件是私有(private)的,只是您不能在其他文件中使用它,除非将其导出。

关于Javascript 文件或模块范围内的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47707509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com