javascript:全局变量的短信?

时间:2012-01-02 12:51:52

标签: javascript jquery variables text global

我正在阅读我的javascript文件,我想到了两个问题:

1)我使用了26个文本字符串,其中一些在几个函数中重复出现。 所以我认为将所有这些声明为全球变量是否是一个好主意?

2)95%的代码是javascript,其余的是JQuery。逻辑非常简单。是否值得将我的所有JS代码转换为JQuery?

示例代码:

    email = document.getElementById('email').value;
    document.myForm.submit();

3 个答案:

答案 0 :(得分:4)

将常量变量分组在一个位置通常是个好主意,因此它们只定义一次,没有重复,并且易于查看和修改。

但是,我更喜欢将字典分组为单个对象或模块。这将减少全局命名空间的混乱,表明变量已连接,并允许您更好地迭代和操作它们(如果您希望这样做)。与使用数组而不是x1,x2,...,xn变量背后的原因相同。

//setting up the strings
var strings = {
    //string id : string value
    'a' : 'a string',
    'b' : 'another string'
};

//using the strings
console.log( strings.a );
console.log( strings.['a'] );

此外,jQuery只是一个Javascript库。考虑到你给我们的信息,我真的没有理由尝试转换代码(并冒险意外破解它)。

答案 1 :(得分:2)

1)如果你需要在任何地方访问这些字符串,最好只定义一个存储所有字符串的全局变量(可以是arrayobject),否则考虑将这些函数分组在一个闭包中(一个所谓的“立即自执行函数”),然后在创建的作用域内声明该数组(或对象)。 e.g。

 (function() {
     var hastrings = {
         'string1' : 'value1',
         'string2' : 'value2',
         ...
     };

     /* all functions using common strings here */

 }());

2)这取决于:您应该考虑使用仅使用jQuery的构造编写多少LOC,但请记住,使用直接javascript可能会使某些指令更具性能(因为您总是会调用jQuery功能)。所以没有明确的答案。它可能会有所不同,具体取决于代码的功能,复杂程度以及构造方式。

答案 2 :(得分:2)

1)根据您的场景,您可以声明为Global,我觉得全局变量写得比硬编码更好。

2)Jquery是一个javascript框架(ajax)

 document.getElementById('email')    is faster than $("#email")

所以javascript最好保留,看看你是否有任何复杂的代码,Jquery只需要很少的努力,然后就可以在那些地方使用。