在一个函数中如何区别Node环境和浏览器环境并执行对应代码段?
由于Node和浏览器环境的不同,内置的许多对象和函数都不一样,同一功能的实现可能需要编写不同的代码片段,那么问题来了,怎么区分Node环境和浏览器环境,我之前想当然以为下面这样写是可以的,然后结果是报错了
// 如何区分Node环境和浏览器环境
function distinguish() {
if (global) {
console.log('node环境')
} else if (window) {
console.log('window环境')
} else {
console.log('其他环境')
}
}
distinguish()
以下是浏览器执行结果:我知道是由于global未定义导致,有什么办法能够让if里面判断为false而不是报错呢?
回复
1个回答

test
2024-07-17
javascript 现在可以用标准的 globalThis 来获取全局对象,不需要区分环境了https://developer.mozilla.org...
即使是在低版本浏览器,MDN 也提供了标准的 polyfill
var getGlobal = function () {
if (typeof self !== 'undefined') { return self; }
if (typeof window !== 'undefined') { return window; }
if (typeof global !== 'undefined') { return global; }
throw new Error('unable to locate global object');
};
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容