看起来每个范围的很多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>
答案 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
变量添加到窗口/全局范围。