浅谈Nodejs中的作用域问题
在JS中有全局作用域和函数作用域,而在Nodejs中也自己的作用域,分为全局作用域(global)和模块作用域。
js作用域:
以前学js的时候我们的全局对象是window,如:
var a = 10; console.log(window.a);
我们定义的全局变量默认是给window添加一个属性或者方法。
function fn(){ var num = 22; } console.log(num);
报错,因为num是在函数中定义的,在函数外部是访问不了函数内部的变量的,虽然可以通过闭包来访问函数中的变量,但这不是我要说的重点,这也就是函数作用域。
好了,今天的重点来了,Nodejs中的作用域是什么样的?
首先我在文件1.js中定义了一个全局变量,全局变量用global来定义。
global.web = "Nodejs";
然后我通过2.js来引用1.js文件
require('./1.js');
在nodejs中已经没有了html,dom,和bom了,自然也没有了script标签,在node中如果需要引入一个文件则需要通过require方法来加载这个文件,里面写对应的文件路径,一般我们写相对路径,相对路径前面需要加./如果是绝对路径则用/。接下来我们在2.js中访问一下这个全局变量。
console.log(global.web); //Nodejs
ok,
这比较简单,一开始我还说了在Nodejs中还有模块作用域,那模块作用域又是什么?
说到模块作用域,不得不提模块化开发,如果你有过模块化开发的经验你一定曾经为了变量名而头疼过,因为如果你写的代码和你同事写的代码不规范的话,那么在代码中如果出现相同的变量名,那么后面的变量是会覆盖之前的变量的,在js中我们可以通过函数来解决这个问题,而在nodejs中我们除了可以使用函数的作用域以外,nodejs还规定了一种模块作用域,每个文件都是一个模块,也就是说每个文件都有各自的作用域,如果你不通过global来定义变量另外一个文件是访问不了这个文件的变量的。当然如果你想在一个文件访问另外一个文件的变量,除了global以外还有一种方法,后面我们会说到。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!
相关文章
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
这篇文章主要介绍了Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用,本文通过实例代码文字说明给大家讲解的非常详细,需要的朋友参考下2019-11-11nodejs子进程child_process和cluster模块深入解析
本文从node的单线程单进程的理解触发,介绍了child_process模块和cluster模块,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-09-09为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
这篇文章主要介绍了为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-09-09
最新评论