浅谈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 npm package.json中文文档
Sep 04 NodeJs
nodejs通过phantomjs实现下载网页
May 04 NodeJs
nodejs redis 发布订阅机制封装实现方法及实例代码
Dec 15 NodeJs
详解Nodejs基于mongoose模块的增删改查的操作
Dec 21 NodeJs
详解Nodejs的timers模块
Dec 22 NodeJs
nodejs+express实现文件上传下载管理网站
Mar 15 NodeJs
用nodeJS搭建本地文件服务器的几种方法小结
Mar 16 NodeJs
nodejs实现邮件发送服务实例分享
Mar 29 NodeJs
nodejs爬虫遇到的乱码问题汇总
Apr 07 NodeJs
NodeJs安装npm包一直失败的解决方法
Apr 28 NodeJs
nodejs multer实现文件上传与下载
May 10 NodeJs
对mac下nodejs 更新到最新版本的最新方法(推荐)
May 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
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
php实现分页显示
2015/11/03 PHP
理清PHP在Linxu下执行时的文件权限方法
2017/06/07 PHP
详解使用php-cs-fixer格式化代码
2020/09/16 PHP
统一接口:为FireFox添加IE的方法和属性的js代码
2007/03/25 Javascript
学习ExtJS Window常用方法
2009/10/07 Javascript
JavaScript 拾漏补遗
2009/12/27 Javascript
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
2013/04/15 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
2015/11/05 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
2016/07/01 Javascript
JavaScript字符集编码与解码详谈
2017/02/02 Javascript
JS实现批量上传文件并显示进度功能
2017/06/27 Javascript
vue多种弹框的弹出形式的示例代码
2017/09/18 Javascript
Vue.directive()的用法和实例详解
2018/03/04 Javascript
使用uni-app开发微信小程序的实现
2019/12/13 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
2020/08/06 Javascript
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
Python写的贪吃蛇游戏例子
2014/06/16 Python
基于python yield机制的异步操作同步化编程模型
2016/03/18 Python
Python数据结构之单链表详解
2017/09/12 Python
Python操作mongodb的9个步骤
2018/06/04 Python
解决python xx.py文件点击完之后一闪而过的问题
2019/06/24 Python
Python3安装psycopy2以及遇到问题解决方法
2019/07/03 Python
Flask配置Cors跨域的实现
2019/07/12 Python
Django框架视图函数设计示例
2019/07/29 Python
使用pycharm在本地开发并实时同步到服务器
2019/08/02 Python
Django 响应数据response的返回源码详解
2019/08/06 Python
在pytorch中对非叶节点的变量计算梯度实例
2020/01/10 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
个性化皮包、小袋、生活配件:Mon Purse
2019/03/26 全球购物
2014年计算机专业个人自我评价
2014/01/19 职场文书
焦点访谈观后感
2015/06/11 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书
四年级语文教学反思
2016/03/03 职场文书
Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD的解决方法
2022/07/23 数码科技