【问题标题】:javascript: text messages on global variables?javascript:关于全局变量的短信?
【发布时间】:2012-01-02 12:51:51
【问题描述】:

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

1) 我使用了 26 个文本字符串,其中一些在多个函数中重复出现。 所以我想是否将它们都声明为全局变量是个好主意?

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

示例代码:

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

【问题讨论】:

  • jquery 是 javascript,在设计需要之前声明全局变量并不是一个好主意。
  • 如果可以,我建议您将 5% 的 jQuery 代码改为纯 JavaScript。您将减少整个库加载以及您的正常代码的负载,其中大部分是您不使用也不需要的函数。
  • 好吧,我在 div 上使用了一些 JQuery 函数,例如 .show 和 .hide。我也不知道 JavaScript 比 JQuery 更快更好。有人告诉我,JQuery 的跨浏览器兼容性更好,我必须支持 FF 和 IE。
  • 这不仅是一个好主意,因为 JavaScript 代码本身更快,而且因为在较慢的 Internet 连接上,您的页面加载速度会慢得多,因为还必须加载 jQuery。当然,由于缓存的原因,并不是每个人都这样。不过,jQuery 确实增加了跨浏览器的兼容性。但是像.show 这样的函数可以很容易地使用 CSS 来完成,并使用 JavaScript 作为后备。最后,由您决定。

标签: javascript jquery variables text global


【解决方案1】:

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

但是,我更愿意将字典分组到单个对象或模块中。这将减少全局命名空间的混乱,指示变量已连接,并允许您更好地迭代和操作它们(如果您愿意的话)。使用数组而不是 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 库。鉴于您提供给我们的信息,我真的没有理由尝试转换代码(并冒着意外破坏它的风险)。

【讨论】:

  • 我是 JavaScript 的初学者,但我会和我的老板谈谈这个变化,以使用 Objects。
【解决方案2】:

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

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

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

所以最好保留 javascript,看看你是否有任何复杂的代码,Jquery 正在以最小的努力完成,然后你可以在那些地方使用。

【讨论】:

    【解决方案3】:

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

     (function() {
         var hastrings = {
             'string1' : 'value1',
             'string2' : 'value2',
             ...
         };
    
         /* all functions using common strings here */
    
     }());
    

    2) 这取决于:您应该考虑使用 jQuery-only 构造来编写多少 LOC,但请记住,使用直接 javascript 可能会提高某些指令的性能(因为您总是会调用 jQuery 函数) .所以没有一个确定的答案。它可能会有所不同,具体取决于您的代码的用途、复杂程度以及您的结构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多