在Javascript中,可以在文件之间共享常量,就像在Ruby中一样吗?

时间:2016-06-01 21:55:39

标签: javascript

这可能是一个奇怪的问题,因为人们更常见的是如何避免使用全局变量。

来自Ruby世界,我在两个具体的例子中使用全局变量非常舒服:

  1. 常数。在Ruby中导入文件时,其所有常量都会自动提供给程序中的其他文件。

  2. (这与第一个相关)包。当我在所需文件中加载Ruby Gem时,它也可以在我的其他文件中使用。

  3. 我已经开始使用SELECT products_id, options_id, group_concat( options_values_id ) FROM products_attributes pa WHERE pa.options_id IN (SELECT distinct products_options_id FROM products_options WHERE products_options_name LIKE '%Velikost%' AND language_id =7) GROUP BY products_id, options_id ,但我发现我在很多不同的文件中导入相同的模块。

    我真的很想在Javascript中使用这些功能。我现在编写代码的方式,我使用函数方法并将所有常量作为参数传递。问题是我的代码对我的喜好太过冗长。

    我真的不是在寻找一个简短的回答:没有"响应类型,这里。即使它太难了,我也很欣赏指向如何避免将常量作为参数传递给函数的方向。

1 个答案:

答案 0 :(得分:1)

使用全局变量的一种方法可能是使用HTML5本地存储。

我的想法是,在你的全局变量中有一个对象,并在页面加载时将每个全局变量保存到它自己的本地存储位置。

所以你有一个存储了全局变量的对象:

var globals = {
    GLOBAL1: "SomeString",
    GLOBAL2: 400
}

然后onload /或者如果你想在页面加载之前尽快调用它,你可以让一个函数运行你的全局并将值保存到本地存储

for(var key in globals) {
    localStorage.setItem(key, globals[key]);
}

然后,稍后,当函数需要时,例如GLOBAL2,您可以调用:

localStorage.getItem("GLOBAL2");