【问题标题】:Store javascript variables in array将javascript变量存储在数组中
【发布时间】:2010-12-25 18:35:02
【问题描述】:

我确信有人已经解决了这个问题,但我没有找到一些结果。 我想知道维护适当变量范围的最快方法是什么。 这是我今天早上写的一些示例 jquery 代码。

var oSignup = {
    nTopMargin: null,
    oBody: $("div#body"),
    oSignup: $("div#newsletter_signup"),
    oSignupBtn: $("div#newsletter_signup a.btn-s4")
}

oSignup.nTopMargin = Math.abs(oSignup.oSignup.offset().top);
oSignup.oSignupBtn.toggle(function(){
    oSignup.oSignup.css({"top":0});
    oSignup.oBody.css({"top":oSignup.nTopMargin});
},function(){
    oSignup.oSignup.css({"top":-(oSignup.nTopMargin)});
    oSignup.oBody.css({"top":0});
});

这是好的还是坏的做法?

【问题讨论】:

  • 有什么好的或坏的做法?
  • 小问题:你将它们存储在一个对象中,而不是一个数组中
  • @Johnathan:我的变量创建/使用方法是不赞成还是首选?为什么?将是我的终极问题。
  • @Cobbal:我错了。使用正确的术语从未如此出色。我更喜欢视觉学习类型!但是,是的,谢谢你指出这一点。

标签: javascript arrays variables scope performance


【解决方案1】:

这不是“理想的”。以下是问题:

  • 不要混合/匹配声明样式,如果所有内容都可以在 {} 声明中完成,那么就这样做,如果不能,请谨慎选择事物的方式
  • 不要让对象的名称与其包含的字段相同。它当然有效,但不是一个“好”的想法,难以理解和维护。

【讨论】:

  • 我认为范围很好,我要注意的一件事是在你的函数中不要说 oSignup.oSignup.css,引用全局变量是不好的,请改用 this.oSignup.css。
  • @Zoidberg: 但thisoSignup.oSignupBtn
  • 是的,我在发布后不久就意识到我做了什么。我已经改变了这一点。除了我的名称间距错误之外,这是首选方法吗?范围对我来说很重要,但速度更重要。变量创建的标准方法更快吗?即:var foo = "bar";
【解决方案2】:

本质上,您所说的是命名空间。也就是说,将应用程序的变量和逻辑与其他所有内容分开。只要您意识到不这样做的陷阱,您就比其他大多数人(目前的公司除外)遥遥领先。

Michael 的建议简洁而真实,但您正朝着正确的方向前进。如果您想了解有关命名空间最佳做法的更多建议,只需查看 Google 搜索中的大多数热门结果,但 Dustin Diaz's article 尤其会为您提供密集但非常通用的命名空间方式等等。

【讨论】:

    【解决方案3】:

    我和 Zoidberg 在一起。这很好。事实上,它比我见过的许多其他的要优雅得多,并且会为我的代码审查评分 +1。

    【讨论】:

      猜你喜欢
      • 2013-09-03
      • 1970-01-01
      • 2021-06-22
      • 1970-01-01
      • 1970-01-01
      • 2020-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多