我发现有人用这个方法来获取当前脚本位置的路径:
_getScriptLocation: (function() {
var r = new RegExp("(^|(.*?\\/))(" + scriptName + ")(\\?|$)"),
s = document.getElementsByTagName('script'),
src, m, l = "";
for(var i=0, len=s.length; i<len; i++) {
src = s[i].getAttribute('src');
if(src) {
m = src.match(r);
if(m) {
l = m[1];
break;
}
}
}
return (function() { return l; });
})(),
但不知道为什么要使用自执行匿名函数?
为什么不用这个:
_getScriptLocation: function() {
var r = new RegExp("(^|(.*?\\/))(" + scriptName + ")(\\?|$)"),
s = document.getElementsByTagName('script'),
src, m, l = "";
for(var i=0, len=s.length; i<len; i++) {
src = s[i].getAttribute('src');
if(src) {
m = src.match(r);
if(m) {
l = m[1];
break;
}
}
}
return l;
}
最佳答案
在第一个(自执行函数)中,函数的过程只执行一次, 所以:
APP._getScriptLocation();
APP._getScriptLocation();
APP._getScriptLocation();
只是为每次调用返回 l
(该过程将永远不会再次执行 - 它只会在您的脚本加载后执行:因为它是一个自执行函数)。
但是在第二个中,每当你调用你的方法时:
APP._getScriptLocation();
您正在一次又一次地执行所有过程,在这种情况下不需要。
关于javascript - 为什么在获取脚本路径时使用自执行匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16952932/