zoukankan      html  css  js  c++  java
  • 如何判断当前 js 代码是运行在浏览器还是node环境中 All In One

    如何判断当前 js 代码是运行在浏览器还是node环境中 All In One

    globalThis

    // ✅✅✅
    const env = globalThis.window ? 'js 运行在浏览器环境' : 'js 运行 Node.js 环境';
    
    console.log('js env =', env);
    
    console.log('js env =', globalThis.window);
    // undefined
    console.log('js env =', typeof window);
    // string  'undefined'
    console.log('js env =', typeof global);
    // 'object'
    
    /*
    
    js env = js 运行 Node.js 环境
    js env = undefined
    js env = 'undefined'
    js env = 'object'
    
    */
    
    

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis

    solutions ✅

    // ✅✅
    // const env = (typeof window === 'object') ? 'js 运行在浏览器环境' : 'js 运行 Node.js 环境';
    const env = (typeof window === 'undefined') ? 'js 运行在浏览器环境' : 'js 运行 Node.js 环境';
    
    console.log('js env =', env);
    
    console.log('!!(typeof window) =', !!(typeof window));
    console.log('(typeof window === \'undefined\') =', typeof window === 'undefined');
    
    /*
    
    js env = js 运行在浏览器环境
    !!(typeof window) = true
    (typeof window === 'undefined') = true
    
    */
    
    
    // ✅
    let env = 'js 运行 Node.js 环境';
    try {
      if(window) {
        env = 'js 运行在浏览器环境';
      }
    } catch (error) {
      // console.log('error =', error);
    }
    console.log('js env =', env);
    
    

    bad

    const env = window ? 'js 运行在浏览器环境' : 'js 运行 Node.js 环境';
    
    console.log('js env =', env);
    
    /*
    
    const env = window ? 'js 运行在浏览器环境' : 'js 运行 Node.js 环境';
                ^
    ReferenceError: window is not defined
    
    */
    
    

    
    const env = global ? 'js 运行在浏览器环境' : 'js 运行 Node.js 环境';
    
    console.log('js env =', env);
    
    /*
    // Uncaught ReferenceError: global is not defined
    
    */
    

    refs



    ©xgqfrms 2012-2020

    www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!

    原创文章,版权所有©️xgqfrms, 禁止转载 ️,侵权必究⚠️!


    xgqfrms
  • 相关阅读:
    java垃圾回收机制
    mysql的find_in_set函数操作
    mysql中常见的sql语句语法书写操作
    如何破坏双亲委派原则
    mysql中临时表的创建
    spring当中的事务处理
    restTemplate调用操作出现乱码
    mysql中的any_value的基本使用操作
    DTD与XSD的区别
    idea的插件
  • 原文地址:https://www.cnblogs.com/xgqfrms/p/15811668.html
Copyright © 2011-2022 走看看