DAY25: 作用域三种类

在这一篇主要讲了Node 在终机端和脚本文件this不同的指向,那麽今天要来简单介绍Nodejs作用域的种类,但今天讨论的只限於在脚本文件的环境下

一、全局作用域

定义在全局作用域上的变量可通过global对象上抓取到。
换个方式说,如果今天变量没有使用constvarlet…等关键字来定义的话,
它就属於全局作用域。像是 :

//全局作用域 
nicole=1000;
console.log("global对象的结果是 "+ global.nicole);

nicole变量是由global定义而成,而nicole变量是在全局作用域之中,
所以就算是在不同的档案文件也能被拜访到。

比如说在名为 作用域.js 这个档案上,写上

nicole=1000;

再创另一个档案名为 我是另一个档案.jsrequire调用nicole这个变量

//全局作用域调用变量
require('./作用域.js');
console.log(nicole);

执行结果:
https://ithelp.ithome.com.tw/upload/images/20211006/20140244UYIOiaZgro.png

二、模块作用域

在每个档案文件定义於varletconst的变量都是位於模块作用域中,
而每个档案都是一组模块,各自独立运作,不同模块作用域之间都是区隔开的,
模块中的this指向module.exports

//模块作用域
this.nicole=8000;
console.log(module.exports);

块作用基本在每个程序语言都有块作用域,
就像是C#语言的if判断语句或是for回圈等语句都是。

三、ES5的作用域

在ES5中只有全局作用域与函数作用域。
若假设已经有一个nicole变量属於全局作用域

var nicole="Nicole";

这个变量可以在同一个档案中任一位置被访问到。
若还有需要在建立一个新的作用域,就建立一个新的函数来实现。

//新函数创建新的作用域
var nicole="LOVE";
function newNicole()
{
    var nicole="MYSELF";
    console.log("新作用域: "+nicole);
}
newNicole();
console.log(nicole);

执行结果:

https://ithelp.ithome.com.tw/upload/images/20211006/20140244NdCO3Ltx7V.png

虽然变量名称是相同的,但是这两个nicole个属於两个不同的作用域,
在函数中的作用域,不会影响到全局变量。


<<:  Day26 - AlertDialog

>>:  Day 25路由

Laravel Queue Job:深入理解 timeout 的运作

work 和 listen 的差别 让 queue work 开始执行任务的指令有两个:work 和...

作业系统L1-概说

作业系统L1-概说 电脑系统结构 硬体(Hardware)–提供基本运算资源 CPU, 记忆体, I...

Day 21 - canvas 玩拼图 P5.js

今天本来要带大家玩 用 canvas 完成拼图 参考的范例在这里 很可惜又是时间不足 先把目前完成的...

D20 第十周 (回忆篇)

这礼拜在弄第九周作业,在 session 的部分花相对多的时间研究,主要是安全议题的关系。 然後也开...

10. CI x Github Action

CI 持续整合。 为什麽要 CI 呢? 想想我们前面写了那麽辛苦的自动测试,结果有人不跑测试就上传。...