Javascript 如何判断是在浏览器中运行还是在NodeJS中运行?
Javascript代码判断它是在浏览器中运行还是在NodeJS中运行的最佳方式是什么 我在寻找一个布尔值的东西Javascript 如何判断是在浏览器中运行还是在NodeJS中运行?,javascript,node.js,browser,Javascript,Node.js,Browser,Javascript代码判断它是在浏览器中运行还是在NodeJS中运行的最佳方式是什么 我在寻找一个布尔值的东西 试图访问窗口并捕获异常似乎很难。有更好的方法吗?您可以使用以下的精简版本: 您可以使用以下内容的精简版本: 没有例外节点=(窗口类型==“未定义”)为什么不检查节点中提供以下输出的process.version:{http_parser:'1.0',node:'0.10.4',v8:'3.14.5.8',ares:'1.9.0-DEV',uv:'0.10.3',zlib:'1.2.3
试图访问
窗口
并捕获异常似乎很难。有更好的方法吗?您可以使用以下的精简版本:
您可以使用以下内容的精简版本:
没有例外<代码>节点=(窗口类型==“未定义”)代码>为什么不检查节点中提供以下输出的process.version:{http_parser:'1.0',node:'0.10.4',v8:'3.14.5.8',ares:'1.9.0-DEV',uv:'0.10.3',zlib:'1.2.3',modules:'11',openssl:'1.0.1e'}这是我们用于节点/AMD/浏览器检测()的块,而不是布尔值(有两种以上的设置),它在不同的配置中调用初始化函数。没有异常;
nodal=(typeof window=='undefined');
为什么不检查process.version,它在node中提供以下输出:{http_parser:'1.0',node:'0.10.4',v8:'3.14.5.8',ares:'1.9.0-DEV',uv:'0.10.3',zlib:'1.2.3',modules:'11',openssl:'1.0.1e'}下面是我们用于node/AMD/浏览器检测()的块,而不是布尔值(有两种以上的设置),它在不同的配置中调用初始化函数。为什么要为要计算为bool的对象返回bool呢?var isNode=typeof exports!==“object”;
我认为我的版本更清晰。您如何确保将来“exports”变量不会表示对象浏览器端?常见的“cast to boolean”运算符(这仍然是不必要的,但至少使布尔性变得清晰)is!!
?true:false
对大多数JavaScript开发人员来说都是一种强烈的代码味道。首先,我听说过这一点。为什么要为要计算为bool的东西返回bool呢?var isNode=typeof exports!=='object';
我认为我的版本更清晰。您如何确保将来不会使用'exports'变量要表示对象浏览器端吗?常见的“强制转换为布尔”运算符(这仍然是不必要的,但至少使布尔性变得清晰)是!!
?对大多数JavaScript开发人员来说,true:false
是一种强烈的代码气味。首先我听说过。@BenFortune你是对的:更正了。@BenFortune你是对的:更正了。
var isNode = (typeof exports === 'object') ? true: false;
var isNode = (typeof processs != 'undefined' && typeof process.versions != 'undefined' && typeof process.versions.node != 'undefined');