在这一篇主要讲了Node 在终机端和脚本文件this不同的指向,那麽今天要来简单介绍Nodejs作用域的种类,但今天讨论的只限於在脚本文件的环境下
。
定义在全局作用域上的变量可通过global对象上抓取到。
换个方式说,如果今天变量没有使用const
、var
、let
…等关键字来定义的话,
它就属於全局作用域。像是 :
//全局作用域
nicole=1000;
console.log("global对象的结果是 "+ global.nicole);
nicole变量是由global定义而成,而nicole变量是在全局作用域之中,
所以就算是在不同的档案文件也能被拜访到。
比如说在名为 作用域.js
这个档案上,写上
nicole=1000;
再创另一个档案名为 我是另一个档案.js
用require
调用nicole这个变量
//全局作用域调用变量
require('./作用域.js');
console.log(nicole);
执行结果:
在每个档案文件定义於var
、let
、const
的变量都是位於模块作用域中,
而每个档案都是一组模块,各自独立运作,不同模块作用域之间都是区隔开的,
模块中的this指向module.exports
。
//模块作用域
this.nicole=8000;
console.log(module.exports);
块作用基本在每个程序语言都有块作用域,
就像是C#语言的if判断语句或是for回圈等语句都是。
在ES5中只有全局作用域与函数作用域。
若假设已经有一个nicole变量属於全局作用域
var nicole="Nicole";
这个变量可以在同一个档案中任一位置被访问到。
若还有需要在建立一个新的作用域,就建立一个新的函数来实现。
//新函数创建新的作用域
var nicole="LOVE";
function newNicole()
{
var nicole="MYSELF";
console.log("新作用域: "+nicole);
}
newNicole();
console.log(nicole);
执行结果:
虽然变量名称是相同的,但是这两个nicole个属於两个不同的作用域,
在函数中的作用域,不会影响到全局变量。
work 和 listen 的差别 让 queue work 开始执行任务的指令有两个:work 和...
作业系统L1-概说 电脑系统结构 硬体(Hardware)–提供基本运算资源 CPU, 记忆体, I...
今天本来要带大家玩 用 canvas 完成拼图 参考的范例在这里 很可惜又是时间不足 先把目前完成的...
这礼拜在弄第九周作业,在 session 的部分花相对多的时间研究,主要是安全议题的关系。 然後也开...
CI 持续整合。 为什麽要 CI 呢? 想想我们前面写了那麽辛苦的自动测试,结果有人不跑测试就上传。...