由于Node和浏览器环境的不同,内置的许多对象和函数都不一样,同一功能的实现可能需要编写不同的代码片段,那么问题来了,怎么区分Node环境和浏览器环境,我之前想当然以为下面这样写是可以的,然后结果是报错了
// 如何区分Node环境和浏览器环境
function distinguish() {
if (global) {
console.log('node环境')
} else if (window) {
console.log('window环境')
} else {
console.log('其他环境')
}
}
distinguish()
以下是浏览器执行结果:
我知道是由于global未定义导致,有什么办法能够让if里面判断为false而不是报错呢?
javascript 现在可以用标准的 globalThis 来获取全局对象,不需要区分环境了
https://developer.mozilla.org...
即使是在低版本浏览器,MDN 也提供了标准的 polyfill