浅谈Nodejs中的作用域问题

发布时间 - 2026-01-10 22:07:04    点击率:

在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的调试方法  # Linux环境下nodejs的安装图文教程  # nodejs连接mongodb数据库实现增删改查  # Nodejs 搭建简单的Web服务器详解及实例  # Nodejs下用submit提交表单提示cannot post错误的解决方法  # NodeJS和BootStrap分页效果的实现代码  # nodejs简单实现操作arduino  # NodeJs读取JSON文件格式化时的注意事项  # nodejs微信公众号支付开发  # nodeJs内存泄漏问题详解  # 全局变量  # 如果你  # 而在  # 说到  # 另外一个  # 自己的  # 都是  # 变量名  # 是在  # 都有  # 来了  # 我在  # 好了  # 我还  # 又是  # 也没  # 说了  # 中有  # 和你  # 你想 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在阿里云完成域名注册与建站?  如何在阿里云部署织梦网站?  php json中文编码为null的解决办法  b2c电商网站制作流程,b2c水平综合的电商平台?  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  如何在云主机上快速搭建网站?  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  如何在IIS中新建站点并解决端口绑定冲突?  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  Laravel如何优化应用性能?(缓存和优化命令)  Laravel如何创建自定义中间件?(Middleware代码示例)  用v-html解决Vue.js渲染中html标签不被解析的问题  如何在万网开始建站?分步指南解析  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  Python3.6正式版新特性预览  米侠浏览器网页背景异常怎么办 米侠显示修复  Android okhttputils现在进度显示实例代码  如何用免费手机建站系统零基础打造专业网站?  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  深圳网站制作的公司有哪些,dido官方网站?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Laravel如何使用Livewire构建动态组件?(入门代码)  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  Laravel如何与Inertia.js和Vue/React构建现代单页应用  Python正则表达式进阶教程_复杂匹配与分组替换解析  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  浅谈Javascript中的Label语句  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  如何确保西部建站助手FTP传输的安全性?  如何用腾讯建站主机快速创建免费网站?  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  Python文件异常处理策略_健壮性说明【指导】  phpredis提高消息队列的实时性方法(推荐)  微信推文制作网站有哪些,怎么做微信推文,急?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  详解jQuery停止动画——stop()方法的使用  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  ,网页ppt怎么弄成自己的ppt?  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  JS中对数组元素进行增删改移的方法总结  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  如何在阿里云虚拟服务器快速搭建网站?  JavaScript常见的五种数组去重的方式  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  如何在 Pandas 中基于一列条件计算另一列的分组均值  详解Android——蓝牙技术 带你实现终端间数据传输