Node学习之module和exports 变量的作用域使用

17 篇文章 0 订阅

5.js

/*
*   在一个变量中通过var定义的变量,其作用域范围是当前模块,外部模块不能直接访问
*   如果我们想一个模块能访问另外一个模块中的变量,可以:
*       1. 把变量作为global对象的属性,但是这样的方式是不推荐的
*           global.a=100;
*       2. 使用模块对象 module
*           module : 保存提供和当前模块有关的一些信息
*                    在这个module对象下有个子对象 : exports对象
*                    我们可以通过这个子对象把一个模块中的局部变量对外进行访问
*                           module.exports.a=a;
*                    在模块作用域,还有一个内置的模块对象,exports,他其实就是module.exports.a=a;
*                           exports.a=a;
*                               console.log(module.exports===exports); 结果是true
* */
//var a=100; 另外的模块不能访问这个变量;

//global.a=100;

//console.log(module);

var a=100;

//module.exports.a=a;

//console.log(module.exports===exports);

exports.a=a;

 

4.js 

var m5=require('./5.js');

//console.log(a);

console.log(m5);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Node.js ,确实没有全局作用域,但是有一个称为全局对象的东西,可以在任何地方访问它。这个全局对象是 `global`,它包含了一些全局变量函数,比如 `process`、`console`、`setTimeout` 等等。在 Node.js ,每个文件都有自己的模块作用域,可以使用 `module.exports` 导出模块,也可以使用 `require` 导入其他模块。所以在 Node.js ,虽然没有全局作用域,但是有全局对象和模块作用域,可以实现类似于全局作用域的功能。 ### 回答2: 在Node.js,没有全局作用域的概念。全局作用域是指在程序任何地方都可以访问的变量函数,而在Node.js,所有的变量函数都是模块的本地私有成员。 Node.js将每个文件都视为一个独立的模块,每个模块都有自己的作用域。这意味着在一个模块定义的变量函数只能在该模块内部访问,其他模块无法直接访问或使用这些定义。 为了在模块之间共享变量函数Node.js提供了exports和require两个全局对象。通过exports对象,模块可以将自己的成员暴露给其他模块使用。而使用require函数,模块可以引入其他模块的成员。 例如,在一个名为myModule的模块定义了一个变量和一个函数: ```javascript // myModule.js var myVariable = 'Hello'; function myFunction() { console.log(myVariable); } exports.myVariable = myVariable; exports.myFunction = myFunction; ``` 其他模块可以通过require函数引入该模块,并使用myVariable和myFunction: ```javascript // main.js var myModule = require('./myModule'); console.log(myModule.myVariable); // 输出 'Hello' myModule.myFunction(); // 输出 'Hello' ``` 这种模块化的设计使得每个模块的作用域相互独立,可以更好地控制变量函数的访问权限,提高代码的可维护性和可重用性。 ### 回答3: 在 Node ,没有全局作用域这一说法是不准确的。Node 实际上默认会创建一个全局作用域,称为全局对象(global object)。 全局对象在 Node 代表着全局范围内可访问的变量函数。它类似于浏览器的 window 对象。可以在任何地方访问全局对象的属性和方法。 在 Node ,全局对象可以使用 global 关键字来访问。例如,可以使用 global.console.log() 来输出信息到控制台,或者 global.setTimeout() 来设置一个定时器。 在 Node ,每个模块都有自己的作用域。模块内部定义的变量函数默认是私有的,不会对其他模块造成影响。这样可以避免不同模块之间的变量名冲突。 此外,Node 还提供了一个模块系统,允许将代码分隔成多个模块,每个模块具有自己的作用域。通过使用 require() 函数来引入其他模块,可以在模块之间共享变量函数。 在总结上述内容时,可以说在 Node 存在全局作用域,通过全局对象 global 可以访问全局范围内的变量函数。同时,每个模块也有自己的作用域,可以防止变量名冲突,并通过模块系统实现模块间的数据共享。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值