• 如何判断当前 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
  • 相关阅读:
    C#学习-多态
    C#学习-子类的初始化顺序
    C#学习-面向对象
    Python数据类型知识点全解
    python 复制图片到剪贴板
    pyperclip
    pyautogui
    多线程代码案例
    常用正则表达式最强整理(速查手册)
    python os
  • 原文地址:https://www.cnblogs.com/xgqfrms/p/15811668.html
Copyright © 2020-2023  润新知