面试:如何判断当前脚本运行在浏览器还是node环境中?
1.判断方法
1.检查window对象
在浏览器环境中,全局对象是window。你可以通过检查window对象是否存在来判断是否在浏览器环境中运行。
if (typeof window !== 'undefined') {
console.log('运行在浏览器环境中');
} else {
console.log('运行在非浏览器环境中,可能是Node环境');
}
2.检查process对象
在Node环境中,全局对象是global(但在Node.js中通常使用globalThis来确保兼容性),但是更常见的是通过检查process对象来确认是否在Node环境中。process对象只在Node环境中可用。
if (typeof process !== 'undefined' && process.versions != null && process.versions.node != null) {
console.log('运行在Node环境中');
} else {
console.log('运行在非Node环境中,可能是浏览器环境');
}
3.使用globalThis和global对象
从ES2020开始,globalThis提供了一个标准的方式来访问全局对象,无论是在浏览器还是Node环境中。同时,你也可以检查global对象(在Node.js中通常指向全局对象)。
if (typeof globalThis !== 'undefined') {
console.log('运行在浏览器环境中或Node环境中');
} else if (typeof global !== 'undefined') {
console.log('运行在Node环境中');
} else {
console.log('未知环境');
}
2.示例
function detectEnvironment() {
if (typeof window !== 'undefined' && typeof window.document !== 'undefined') {
return 'browser';
} else if (typeof process !== 'undefined' && typeof require !== 'undefined') {
return 'node';
} else {
return 'unknown';
}
}
// 使用示例
const environment = detectEnvironment();
console.log(`当前运行环境是: ${environment}`);


4万+

被折叠的 条评论
为什么被折叠?



