如何判断当前 js 代码是运行在浏览器还是node环境中 All In One-编程思维

如何判断当前 js 代码是运行在浏览器还是node环境中 All In One

globalThis

// ✅✅✅
const env = globalThis.window ? 'js 运行在浏览器环境' : 'js 运行 Node.js 环境';

console.log('js env =', env);

console.log('js env =', globalThis.window);
// undefined
console.log('js env =', typeof window);
// string  'undefined'
console.log('js env =', typeof global);
// 'object'

/*

js env = js 运行 Node.js 环境
js env = undefined
js env = 'undefined'
js env = 'object'

*/

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis

solutions ✅

// ✅✅
// const env = (typeof window === 'object') ? 'js 运行在浏览器环境' : 'js 运行 Node.js 环境';
const env = (typeof window === 'undefined') ? 'js 运行在浏览器环境' : 'js 运行 Node.js 环境';

console.log('js env =', env);

console.log('!!(typeof window) =', !!(typeof window));
console.log('(typeof window === \'undefined\') =', typeof window === 'undefined');

/*

js env = js 运行在浏览器环境
!!(typeof window) = true
(typeof window === 'undefined') = true

*/

// ✅
let env = 'js 运行 Node.js 环境';
try {
  if(window) {
    env = 'js 运行在浏览器环境';
  }
} catch (error) {
  // console.log('error =', error);
}
console.log('js env =', env);

bad

const env = window ? 'js 运行在浏览器环境' : 'js 运行 Node.js 环境';

console.log('js env =', env);

/*

const env = window ? 'js 运行在浏览器环境' : 'js 运行 Node.js 环境';
            ^
ReferenceError: window is not defined

*/


const env = global ? 'js 运行在浏览器环境' : 'js 运行 Node.js 环境';

console.log('js env =', env);

/*
// Uncaught ReferenceError: global is not defined

*/

refs



©xgqfrms 2012-2020

www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!

原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!


版权声明:本文版权归作者所有,遵循 CC 4.0 BY-SA 许可协议, 转载请注明原文链接
https://www.cnblogs.com/xgqfrms/p/15811668.html

关于docker的配置文件与环境变量的小发现-编程思维

###### 核心内容:使用官方镜像前,一定要拜读它官方自带的description; 使用官方镜像前,一定要拜读它官方自带的description;作为众人认可的官方镜像,你未来遇到的大部分问题,很大可能都在这里预置了解决方案。仔细看docker自带官方描述,让你对docker的使用更顺利。 最近初初接触docker

Python与Javascript相互调用超详细讲解(2022年1月最新)(一)基本原理 Part 1 - 通过子进程和进程间通信(IPC)-编程思维

首先要明白的是,javascript和python都是解释型语言,它们的运行是需要具体的runtime的。 Python: 我们最常安装的Python其实是cpython,就是基于C来运行的。除此之外还有像pypy这样的自己写了解释器的,transcrypt这种转成js之后再利用js的runtime的。基本上,不使用c

VSCode 开发Vue + ElementUI-编程思维

开发环境 VSCodeNode.jsvue-cli Vue3.X 安装好node.js并配置好环境,然后用npm安装vue cli(npm install -g @vue/cli)。 VSCode安装Vue开发用插件 中文语言包:Chinese (Simplified) Language Pack for Visual

Python与Javascript相互调用超详细讲解(更新至2022.01.30)-编程思维

起因是有个项目需要用python调javascript包,作为很久只写过python和少许JS的选手,开始了艰难的学习之路…… 本文作为一个总索引,记录一下所有学到的东西,以及很多很多废话的心路历程。 很多常见的包比如PyExecJs啊,Js2Py啊,很多文章都写过了。一方面,他们列出的有的包,已经很过时了。另一方面,