javascript:关于全局变量的文本消息?

javascript:关于全局变量的文本消息?,javascript,jquery,variables,text,global,Javascript,Jquery,Variables,Text,Global,我正在阅读我的javascript文件,突然想到两个问题: 1) 我使用了26个文本字符串,其中一些字符串在几个函数中被重复。 所以我想,如果将所有这些变量都声明为全局变量是一个好主意 2) 我的代码95%是javascript,其余是JQuery。逻辑非常简单。是否值得将我所有的JS代码转换为JQuery 示例代码: email = document.getElementById('email').value; document.myForm.submit(); < P >

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

1) 我使用了26个文本字符串,其中一些字符串在几个函数中被重复。 所以我想,如果将所有这些变量都声明为全局变量是一个好主意

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

示例代码:

    email = document.getElementById('email').value;
    document.myForm.submit();
< P > 1)如果您需要访问所有字符串,那么最好只定义一个全局VAR,其中存储所有字符串(它可以是<代码>数组>代码>或<代码>对象< /代码>)否则考虑将这些函数分组在一个闭包(所谓的“立即自执行函数”)中,然后声明该数组(或对象)。在创建的范围内。e、 g

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

     /* all functions using common strings here */

 }());

2) 这要视情况而定:您应该考虑使用仅jQuery结构编写多少LOC,但请记住,使用纯javascript可能会更有效(因为您总是调用
jQuery
函数)。所以没有一个明确的答案。它可能会因代码的用途、复杂程度和构造方式而有所不同。

通常最好将常量变量分组在一个点上,这样它们只定义一次,没有重复,并且易于查看和修改

但是,我更愿意将字典分组到单个对象或模块中。这将减少全局命名空间上的混乱,表明变量是连接的,并允许您更好地迭代和操作它们(如果您希望这样做的话)。使用数组而不是使用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) Jquery是一个javascript框架(ajax)


因此,最好保留javascript,看看您是否有Jquery用最少的努力编写的复杂代码,然后您就可以在这些地方使用了。

Jquery是javascript,在设计需要之前声明globals不是一个好主意。如果可以,我建议您将5%的Jquery代码改为纯javascript。您将减少整个库的加载和普通代码的加载,其中大部分是您不使用或不需要的函数。我在div上使用了一些JQuery函数,如.show和.hide。我也不知道JavaScript比JQuery更快更好。我被告知JQuery对于跨浏览器兼容性更好,我必须支持FF和IE。这不仅是一个好主意,因为JavaScript代码本身速度更快,而且因为在较慢的internet连接上,您的页面加载速度会慢得多,因为JQuery也必须加载。当然,由于缓存的原因,并非每个人都是这样。不过,jQuery确实提高了跨浏览器的兼容性。但是像
.show
这样的函数可以使用CSS轻松完成,并使用JavaScript作为后备。最后,这是你的决定。我是JavaScript的初学者,但我会和我的老板谈谈这个改变,利用对象。
 document.getElementById('email')    is faster than $("#email")