最近看到这个问题,想到了之前看axios源码时的一些知识,因此,在这里做一下总结。
axios源码
function getDefaultAdapter() {
var adapter;
if (typeof XMLHttpRequest !== 'undefined') {
// For browsers use XHR adapter
adapter = require('./adapters/xhr');
} else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {
// For node use HTTP adapter
adapter = require('./adapters/http');
}
return adapter;
}
这也是axios既可以用在浏览器,也可以用在node端的原因,axios在设计时就考虑了这2种情形,通过对环境的判断来动态加载代码。
基于上述启发,我们可以有:
if (typeof window === 'object'){
// window只存在于浏览器端
}else if(Object.prototype.toString.call(process) === '[object process]'){
//判断procss
}
这样就可以判断js的运行环境。