nodejs与浏览器中全局对象区别点总结

Node.js中,一个.js文件就是一个完整的作用域(module,模块)。因此 var 声明的变量只在当前.js文件中有效,而不是全局有效。 而global全局对象是独立于所有的.js(module,模块)之上的。

而在浏览器中的最顶层全局对象是window,var声明的变量默认绑定到window对象上

1. 全局对象的定义

概念:在程序的任何地方都可以访问的对象,称之为全局对象。对象的属性称为全局变量。

2. NodeJS中的全局变量总结

这里我们总结下在nodejs中,我们常用的全局变量有哪些

2.1 Buffer类

Buffer,我们也可以称为“缓冲区”,其功能就是在内存中开辟一片区域,用来存放二进制数据。

2.2 __dirname

__dirname,返回当前模块文件解析过后所在的文件夹(目录)的绝对路径。

请记住,__dirname并不是真正的全局变量。

2.3 __filename

__filename,返回当前模块文件被解析过后的绝对路径。

请记住,__filename并不是真正的全局变量。

2.4 module

请记住,module并不是真正的全局变量。

2.5 require()

请记住,require()并不是真正的全局变量。

2.6 exports

请记住,exports并不是真正的全局变量。

2.7 setImmediate和clearImmediate

2.8 setTimeout和clearTimeout

2.9 setInterval 和 clearInterval

2.10 console

用于打印到标准输出和标准错误

2.11 process

process 对象提供有关当前 Node.js 进程的信息并对其进行控制。

2.12 URL

URL 用于网址处理和解析的实用工具

2.13 events

events模块是Node对“发布/订阅”模式(publish/subscribe)的实现。一个对象通过这个模块,向另一个对象传递消息。该模块通过EventEmitter属性,提供了一个构造函数。

3. globalThis

3.1 globalThis是什么?

JS 语言越来越多被用于各种环境中。除了最常见的浏览器之外,它还可以在服务器、智能手机甚至机器人硬件上运行。

每个环境都有其自己的对象模型,并提供了不同的语法来访问全局对象。例如,在 Web 浏览器中,可以通过window,self或frames访问全局对象。但是,在 Node.js 中,这些属性不存在,而必须使用global。

globalThis旨在通过定义一个标准的全局属性来整合日益分散的访问全局对象的方法。该提案被纳入ES2020标准。所有流行的浏览器,包括Chrome 71+、Firefox 65+和Safari 12.1+,都已经支持这项功能。你也可以在Node.js 12+中来使用它。

内容扩展:

NodeJS - global全局对象

function global() {
    // 全局变量。__filename 表示当前正在执行的脚本的文件名。
    console.info('__filename: ' + __filename ); // __filename: D:\github\nodejs-test\requestHandlers.js

    // 全局变量。__dirname 表示当前执行脚本所在的目录。
    console.info('__dirname : ' + __dirname  ); // __dirname : D:\github\nodejs-test

    // 全局函数。setTimeout(cb, ms) 全局函数在指定的毫秒(ms)数后执行指定函数(cb)。setTimeout() 只执行一次指定函数。返回一个代表定时器的句柄值。
    setTimeout(function () {
        console.info('setTimeout: 我只执行一次。');
    }, 2000);

    // 全局函数。clearTimeout( t ) 全局函数用于停止一个之前通过 setTimeout() 创建的定时器。 参数 t 是通过 setTimeout() 函数创建的定时器。
    let t = setTimeout(function () {
        console.info('clearTimeout: 我没办法执行了。');
    }, 2000);
    clearTimeout(t); // 清除定时器

    // 全局函数。setInterval(cb, ms) 全局函数在指定的毫秒(ms)数后执行指定函数(cb)。
    let tt = setInterval(function () {
        console.info('setInterval: 我每2秒执行一次。');
    }, 2000);

    // 全局函数。setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。
    setTimeout(function () {
        clearInterval(tt); // 清除定时器
    }, 5000);

    // 全局对象。console
    console.info('console: 我也属于global。');

    // 全局变量。global 对象的属性。process
    console.info('process 当前目录: ' + process.cwd()); // 输出当前目录
    console.info('process 当前版本: ' + process.version); // 输出当前版本
    console.info('process 平台信息: ' + process.platform); // 输出平台信息
}

输出:

__filename: D:\github\nodejs-test\requestHandlers.js
__dirname : D:\github\nodejs-test
console: 我也属于global。
process 当前目录: D:\github\nodejs-test
process 当前版本: v10.15.3
process 平台信息: win32
setTimeout: 我只执行一次。
setInterval: 我每2秒执行一次。
setInterval: 我每2秒执行一次。

到此这篇关于nodejs与浏览器中全局对象区别点总结的文章就介绍到这了,更多相关nodejs中的全局对象讲解内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Nodejs学习笔记之Global Objects全局对象

    一,开篇分析 在上个章节中我们学习了NodeJS的基础理论知识,对于这些理论知识来说理解是至关重要的,在后续的章节中,我们会对照着官方文档逐步学习里面的各部分模块,好了该是本文主角登台亮相的时候了,Global 让我们来看一下官方的定义: Global Objects全局对象These objects are available in all modules. Some of these objects aren't actually in the global scope but in the

  • nodejs与浏览器中全局对象区别点总结

    Node.js中,一个.js文件就是一个完整的作用域(module,模块).因此 var 声明的变量只在当前.js文件中有效,而不是全局有效. 而global全局对象是独立于所有的.js(module,模块)之上的. 而在浏览器中的最顶层全局对象是window,var声明的变量默认绑定到window对象上 1. 全局对象的定义 概念:在程序的任何地方都可以访问的对象,称之为全局对象.对象的属性称为全局变量. 2. NodeJS中的全局变量总结 这里我们总结下在nodejs中,我们常用的全局变量有

  • NodeJS和浏览器中this关键字的不同之处

    前言 学习过JavaScript的人肯定清楚 处在不同环境下this的指向问题.那么看下面的代码 var type = 1 function toWhere(){ this.type = 2; } toWhere(); console.log(type) 你们肯定会这样想: 这里声明了一个全局变量type,当执行type=1的时候,赋值为1.之后toWhere函数调用,看到函数中有this 就去判断this的指向,这里很清楚,this指向了window,this.type=2执行后,全局变量ty

  • javascript中全局对象的parseInt()方法使用介绍

    复制代码 代码如下: <html> <head> <title>全局对象的parseInt() 方法</title> <script> /* parseInt() 函数可解析一个字符串,并返回一个整数. 1.解析字符串,直到不能解析为止 2.进制转化中,解析字符串,直到不能解析为止 */ document.write(parseInt("123") + "<br/>");//123 docume

  • javascript中全局对象的isNaN()方法使用介绍

    复制代码 代码如下: <html> <head> <title>全局对象的isNaN()方法</title> <script> /* isNaN() 函数通常用于检测 parseFloat() 和 parseInt() 的结果,以判断它们表示的是否是合法的数字. 当然也可以用 isNaN() 函数来检测算数错误,比如用 0 作除数的情况. */ document.write(isNaN(123) + "<br/>"

  • AJAX在不同浏览器中XMLHttpRequest对象的生成示例

    复制代码 代码如下: <script type="text/javascript"> function ajax() { var xmlHttp; try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); }

  • 事件模型在各浏览器中存在差异

    标准参考 根据 W3C DOM 2 Events 描述,EventTarget 接口被所有支持 DOM 事件模型的节点(Node)实现. 该接口提供了 'addEventListener' 和 'removeEventListener' 方法,用来绑定或解绑一个 EventListeners 接口到一个 EventTarget. DOM 2 Events 中定义了 Event 接口,用来提供事件的上下文信息,它提供了若干标准属性和方法. 实现 Event 接口的对象一般作为第一个参数传入事件处理

  • nodejs 全局变量和全局对象知识点及用法详解

    1.全局对象 所有模块都可以调用 1)global:表示Node所在的全局环境,类似于浏览器中的window对象. 2)process:指向Node内置的process模块,允许开发者与当前进程互动. 例如你在DOS或终端窗口直接输入node,就会进入NODE的命令行方式(REPL环境).退出要退出的话,可以输入 process.exit(); 3)console:指向Node内置的console模块,提供命令行环境中的标准输入.标准输出功能. 通常是写console.log(),无须多言 2.

  • JavaScript中的全局对象介绍

    对于任何JavaScript程序,当程序开始运行时,JavaScript解释器都会初始化一个全局对象以供程序使用.这个JavaScript自身提供的全局对象的功能包括: 1.全局对象拥有一些常用的属性值.比如undefined.Infinity以及NaN. 2.全局对象拥有一些常用的属性对象.比如Math.JSON和Number对象均为该全局对象的属性. 3.全局对象提供一些全局函数供调用.比如isNaN().isFinite().parseInt()和eval()等. 4.全局对象提供一些全局

  • 浅析JavaScript中两种类型的全局对象/函数

    这里所说的JavaScript指浏览器环境中的包括宿主环境在内的.第一种是ECMAScript Global Object,第二种是宿主环境(Host)下的全局对象/函数. 一.核心JavaScript内置对象,即ECMAScript实现提供的不依赖于宿主环境的对象 这些对象在程序执行之前就已经(实例化)存在了.ECMAScript称为The Global Object,分为以下几种 1, 值属性的全局对象(Value Properties of the Global Object).有NaN,

随机推荐