浅谈Nodejs中的作用域问题


Posted in NodeJs onDecember 26, 2016

在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以外还有一种方法,后面我们会说到。

 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

NodeJs 相关文章推荐
利用NodeJS的子进程(child_process)调用系统命令的方法分享
Jun 05 NodeJs
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
Sep 26 NodeJs
NodeJS学习笔记之MongoDB模块
Jan 13 NodeJs
Nodejs实现批量下载妹纸图
May 28 NodeJs
nodeJs爬虫获取数据简单实现代码
Mar 29 NodeJs
Nodejs中解决cluster模块的多进程如何共享数据问题
Nov 10 NodeJs
详解nodejs 文本操作模块-fs模块(五)
Dec 23 NodeJs
nodejs密码加密中生成随机数的实例代码
Jul 17 NodeJs
windows系统下更新nodejs版本的方案
Nov 24 NodeJs
nodejs更改项目端口号的方法
May 13 NodeJs
浅谈vue websocket nodeJS 进行实时通信踩到的坑
Sep 22 NodeJs
Nodejs在局域网配置https访问的实现方法
Oct 17 NodeJs
nodeJS删除文件方法示例
Dec 25 #NodeJs
详解nodejs 文本操作模块-fs模块(五)
Dec 23 #NodeJs
详解Nodejs的timers模块
Dec 22 #NodeJs
详解nodejs 文本操作模块-fs模块(四)
Dec 22 #NodeJs
详解nodejs 文本操作模块-fs模块(三)
Dec 22 #NodeJs
详解nodejs 文本操作模块-fs模块(一)
Dec 22 #NodeJs
详解nodejs 文本操作模块-fs模块(二)
Dec 22 #NodeJs
You might like
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
2015/12/28 PHP
Yii中表单用法实例详解
2016/01/05 PHP
浅谈PHP eval()函数定义和用法
2016/06/21 PHP
yii通过小物件生成view的方法
2016/10/08 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
jQuery编写widget的一些技巧分享
2010/10/28 Javascript
JS实现超炫网页烟花动画效果的方法
2015/03/02 Javascript
基于Css3和JQuery实现打字机效果
2015/08/11 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
2015/08/27 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
基于Vuejs实现购物车功能
2016/08/02 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
在vue中获取token,并将token写进header的方法
2018/09/26 Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
2019/04/14 Javascript
vue 集成jTopo 处理方法
2019/08/07 Javascript
layui多iframe页面控制定时器运行的方法
2019/09/05 Javascript
15分钟学会vue项目改造成SSR(小白教程)
2019/12/17 Javascript
微信小程序实现多选框功能的实例代码
2020/06/24 Javascript
vue实现日历表格(element-ui)
2020/09/24 Javascript
Python数据结构之翻转链表
2017/02/25 Python
python基础while循环及if判断的实例讲解
2017/08/25 Python
python实现最长公共子序列
2018/05/22 Python
Python脚本按照当前日期创建多级目录
2019/03/01 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
2019/08/27 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
如何利用python正则表达式匹配版本信息
2020/12/09 Python
LivingSocial爱尔兰:爱尔兰本地优惠
2018/08/10 全球购物
旷课检讨书大全
2014/01/21 职场文书
小学优秀班主任事迹材料
2014/05/17 职场文书
征兵宣传标语
2014/06/20 职场文书
节约每一滴水演讲稿
2014/09/09 职场文书
先进教师个人总结
2015/02/11 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书