每个范围的javascript var语句

时间:2014-02-02 06:33:19

标签: javascript

看起来每个范围的很多var都浪费了字节和糟糕的代码习惯。我不知道如何修复我的代码。我应该如何根据良好的JS实践编辑下面的行?

<script type="text/javascript">
// <![CDATA[
    var jump_page = '{LA_JUMP_PAGE}:';
    var on_page = '{ON_PAGE}';
    var per_page = '{PER_PAGE}';
    var base_url = '{A_BASE_URL}';
    var style_cookie = 'style';
    var style_cookie_settings = '{A_COOKIE_SETTINGS}';
    var onload_functions = new Array();
    var onunload_functions = new Array();

    /**
    * Find a member
    */
    function find_username(url)
    {
        popup(url, 760, 570, '_usersearch');
        return false;
    }

    /**
    * New function for handling multiple calls to window.onload and window.unload by pentapenguin
    */
    window.onload = function()
    {
        for (var i = 0; i < onload_functions.length; i++)
        {
            eval(onload_functions[i]);
        }
    };

    window.onunload = function()
    {
        for (var i = 0; i < onunload_functions.length; i++)
        {
            eval(onunload_functions[i]);
        }
    };

// ]]>
</script>

2 个答案:

答案 0 :(得分:0)

我总是建议将变量范围仅限于需要它们的范围。这是使用全局变量的常见错误源,因为您可能会发生冲突。

我有时会将我的代码包装在JavaScript闭包中,以避免将变量添加到全局范围,因为全局范围内的变量永远不会符合垃圾回收的条件。

答案 1 :(得分:0)

如果您希望避免污染全局window范围,那么您可以像这样整理所有内容:

(function() {
  "use strict";
  var onunload_functions = [];

  window.onunload = function()
  {
    for (var i = 0; i < onunload_functions.length; i++)
    {
      eval(onunload_functions[i]);
    }
  };

}());

此闭包将阻止将随机var变量添加到窗口/全局范围。