【发布时间】:2017-05-16 19:12:04
【问题描述】:
我对全局脚本有疑问,我现在正在使用以下脚本,因为这些函数在每个页面上都全局使用。 (之前我在8个地方定义了像unit converter这样的函数,现在我把它移到全局脚本中,所以我只定义一次。)
我的问题是,这是一种有效的方法或最佳做法吗?我真的需要在其他脚本调用这些方法之前全局定义和加载它们。
我已经搜索过类似这样的文章建议不要使用全局函数。 https://www.w3schools.com/js/js_best_practices.asp
避免使用全局变量
尽量减少全局变量的使用。
这包括所有数据类型、对象和函数。
全局变量和函数可以被其他脚本覆盖。
改用局部变量,并学习如何使用闭包。
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
/*-----------------------------------------------------
global function for Set/Get Cookie
------------------------------------------------------*/
function setCookie(cname,cvalue,exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires=" + d.toGMTString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(name) {
var value = "; " + document.cookie;
var parts = value.split("; " + name + "=");
if (parts.length == 2) return parts.pop().split(";").shift();
}
/*-----------------------------------------------------
global function for ...
------------------------------------------------------*/
function getLBS_Global(p, q, u, b, wb) {
if (b === null || wb === null) {
alert("Error in unit conversion, please retry");
}
var out = {};
switch (u) {
case "8": // A bushel
out.q = (q * b);
out.p = (p / b);
break;
case "10": // lbs
out.q = q;
out.p = p;
break;
case "11": // cwt
out.q = (q * 100);
out.p = (p / 100);
break;
case "12": // metric tonne
out.q = (q * 2204.62262);
out.p = (p / 2204.62262);
break;
case "136": // W bushel
out.q = (q * wb);
out.p = (p / wb);
break;
}
return out;
}
</script>
</head>
<body>
...
</body>
【问题讨论】:
-
嗯,是的。这是完全有效的最佳实践。 ????
-
最好将它包装到一个对象中,这样你就不会与其他函数名进行拦截,但如果所有代码都是由你编写的,那就没有必要了......
-
@PraveenKumar 谢谢,因为我从不同的人那里听到了不同的选择,现在我感觉好多了;D
标签: javascript html global-variables