浅谈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的Promise的用法解析
May 05 NodeJs
学习 NodeJS 第八天:Socket 通讯实例
Dec 21 NodeJs
Highcharts+NodeJS搭建数据可视化平台示例
Jan 01 NodeJs
使用vs code开发Nodejs程序的使用方法
Sep 21 NodeJs
nodeJS服务器的创建和重新启动的实现方法
May 12 NodeJs
NodeJS加密解密及node-rsa加密解密用法详解
Oct 12 NodeJs
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
Feb 02 NodeJs
NodeJS实现同步的方法
Mar 02 NodeJs
nodejs微信开发之自动回复的实现
Mar 17 NodeJs
NodeJs生成sitemap站点地图的方法示例
Jun 11 NodeJs
nodejs二进制与Buffer的介绍与使用
Jul 11 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
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
php 根据自增id创建唯一编号类
2017/04/06 PHP
Laravel框架在本地虚拟机快速安装的方法详解
2018/06/11 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
理解javascript封装
2016/02/23 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
2016/09/20 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
2018/11/28 Javascript
JavaScript Math对象和调试程序的方法分析
2019/05/13 Javascript
使用Layui搭建后台管理界面的操作方法
2019/09/20 Javascript
vue.js 子组件无法获取父组件store值的解决方式
2019/11/08 Javascript
vue-cli3.X快速创建项目的方法步骤
2019/11/14 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
vue与iframe之间的信息交互的实现
2020/04/08 Javascript
在Python的Flask框架下收发电子邮件的教程
2015/04/21 Python
Python3实现简单可学习的手写体识别(实例讲解)
2017/10/21 Python
分享6个隐藏的python功能
2017/12/07 Python
Python利用openpyxl库遍历Sheet的实例
2018/05/03 Python
python 读取摄像头数据并保存的实例
2018/08/03 Python
python实现简单井字棋游戏
2020/03/04 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
Python jieba库分词模式实例用法
2021/01/13 Python
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
美国地毯购买网站:Rugs USA
2019/02/23 全球购物
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
韩语专业本科生求职信
2013/10/01 职场文书
兼职业务员岗位职责
2014/01/01 职场文书
施工安全标语
2014/06/07 职场文书
战略性融资合作协议书范本
2014/10/17 职场文书
学习十八届四中全会依法治国心得体会
2014/11/03 职场文书
公诉意见书范文
2015/06/05 职场文书
pandas中pd.groupby()的用法详解
2022/06/16 Python
python语言中pandas字符串分割str.split()函数
2022/08/05 Python