【问题标题】:How do I declare a variable as global? [duplicate]如何将变量声明为全局变量? [复制]
【发布时间】:2012-09-09 22:05:27
【问题描述】:

可能重复:
How to declare a global variable in a .js file

我需要在我正在开发的全局脚本中设置一个变量。我怎么做?提前致谢!

【问题讨论】:

    标签: javascript


    【解决方案1】:

    在全局执行上下文中声明(不在函数范围内):

    var x = "hello";
    

    将其声明为全局对象的隐式属性(小心,人们可能会认为您犯了错误并错过了var,这将在严格模式下引发引用错误 ,所以不要使用它):

    x = "hello";
    

    将其声明为全局对象的显式属性:

    window.x = "hello";
    

    请记住,window 特定于浏览器环境。如果您正在使用节点,则在所有上下文中都可用的全局对象是 global

    global.x = "hello";
    

    【讨论】:

    • +1 用于显式设置全局对象的属性。
    • process.x?你的意思是global.x
    • @graystateiscoming - 我不知道,我没有太多使用节点。其他人编辑了它。看看文档,我同意你的看法。
    • 很奇怪。是的,process 对象是全局可用的,但它不是全局对象。全局对象为global,相当于在浏览器中使用window
    • @graystateiscoming - 谢谢,我会更新它。我一直想花时间玩节点,但似乎从来没有找到时间!
    【解决方案2】:

    只需在任何函数之外定义一个变量:

    var myGlobalVariable = 42;
    

    不要过度使用全局变量,因为这会使您的代码更难阅读和调试。

    【讨论】:

      【解决方案3】:

      这样

      <script>
      var myGlobal = 2;
      
      
      function xyz()
      {
        //can access myGlobal here
      }
      
      
      </script>
      

      【讨论】:

      • 虽然这是正确的,但以这种方式声明全局变量是一种不好的做法。通常建议您使用window.myGlobal = 2; 明确执行此操作。更清楚的是,您是在定义全局内容,而不是在全局范围内意外泄漏。
      • @codingbiz 我认为你的代码是正确的并且不是一个糟糕的做法,所以你不应该有-1。然后,你有我的 +1
      • @Oriol 我看不出我的答案和 [Lee Taylor] 的答案有什么不同,但我得到了 -1。谢谢。 :)
      【解决方案4】:

      有一篇关于 Javascript 范围的好文章 here - 基本上外部定义的任何内容都可以在内部访问,但反之则不然。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-25
        • 2015-10-10
        • 1970-01-01
        相关资源
        最近更新 更多