【问题标题】:How to declare a global variable from inside a function? [duplicate]如何从函数内部声明全局变量? [复制]
【发布时间】:2014-09-03 23:25:34
【问题描述】:

我想在不同的页面上声明一个全局变量。 所以我所有的全局变量都在 data.js 上,所有的 JavaScript 函数都在 script.js 上 我可以在 JavaScript 中做到这一点,但你如何在 jQuery 中做到这一点? 当我将所有 JavaScript 代码放入

$(function() {
    //JavaScript Codes

});

它不再起作用了。

这是我的代码:

http://plnkr.co/edit/u9CLTErGugOZoDTonAl3?p=preview

【问题讨论】:

  • “在不同的页面上”是什么意思
  • 没有任何变化。 正常的 JavaScript 规则适用。(但是,请注意“onready”不会同步执行。)无论如何,什么“不起作用”?演示代码(应该包含在问题中的一个版本)似乎运行得很好。
  • 只是好奇,你为什么要这么做?
  • 为什么需要全局变量?污染全局命名空间是不好的做法并且不安全,因为任何人在任何时候都可以在您不知情的情况下覆盖这些变量。使用名称间距和/或模式(例如模块/显示模块模式)可能会有所帮助。如果需要,也可以选择使用本地存储或类似设备。除了污染全局命名空间之外,还有很多选择。在创建专门用于托管它们的文件之前,最好了解为什么您认为需要全局变量并查看是否可以解决问题

标签: javascript global-variables


【解决方案1】:

所有全局 javascript 变量都附加到 window 对象。您可以将它们显式绑定到窗口对象:

$(function() {
    window.test = "Hello";
});
alert(test);

您也不能使用关键字var,它们将被隐式绑定到窗口对象:

$(function() {
    test2 = "World";
});
alert(test2);

小提琴:http://jsfiddle.net/6tfr2mh6/

【讨论】:

  • 这会将它们创建为全局对象的属性,这与全局变量略有不同,例如全局变量在任何代码执行之前可用,而全局属性仅在创建它们的代码执行后才可用(可能永远不会)。
  • 哦,我不知道。那么这个答案是不正确的。我根据您的回复在谷歌上搜索了它,对于任何感兴趣的人来说,这里有一个更好的答案:stackoverflow.com/questions/4862193/javascript-global-variables
【解决方案2】:

您可以简单地使用 javascript 变量并使用 jquery 在另一个脚本中使用它。您不需要使用 JQuery 声明变量。

在 data.js 中

var myValue = "I'm on top of the world!!";

在 script.js 中

$(function() {

  var myFunction = function() {
    $("#demo").html(myValue);
  }

  myFunction();
});

您可以在此处查看预览: http://plnkr.co/edit/A9W1rE39DqSLzChX8Qk9?p=preview

【讨论】:

    猜你喜欢
    • 2014-01-17
    • 2012-05-23
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    相关资源
    最近更新 更多