我需要将外部 javascript 文件添加到 <head>
网站的一部分 - 位于临时服务器上时一个文件,用于生产时另一个文件。
到目前为止我已经有了这个,但我收到一个错误:'return'超出函数
<script type="text/javascript">
var pathOrigin = window.location.origin;
var headtg = document.getElementsByTagName('head')[0];
if (!headtg) {
return;
}
var linktg = document.createElement('script');
if (pathOrigin.toLowerCase().indexOf("staging.server.com") >= 0) {
linktg.src = '/script-staging.js';
} else {
linktg.src = '/script-production.js';
}
headtg.appendChild(linktg);
</script>
我错过了什么?
谢谢。
最佳答案
Return - Specifies the value to be returned by a function.
这意味着您从浏览器收到的错误是正确的。您的 return 语句不是函数的一部分,而是全局范围的一部分。您要么必须跳过使用 return
语句并使用简单的变量赋值(如 @Azzy 的答案),要么将其封装在如下函数中:
function getHead() {
var headtg = document.getElementsByTagName('head')[0];
if (typeof headtg === 'undefined') {
return; // will break the function
} else {
var linktg = document.createElement('script');
if (pathOrigin.toLowerCase().indexOf("staging.server.com") >= 0) {
linktg.src = '/script-staging.js';
} else {
linktg.src = '/script-production.js';
}
headtg.appendChild(linktg);
};
};
getHead(); // don't forget to initialize the function
//or you could do:
element.onload/onclick/on<whatever_event> = getHead();
对我来说,也不清楚你想要返回什么,除非你只是想停止脚本执行;引用自 MDN:
If the expression in return [expression] is omitted, undefined is returned instead.
来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return
注意:检查一下为什么使用 typeof
语句比简单的 !
标记来检查某些内容是否存在更安全:Check if object exists in JavaScript .
编辑:对于 return 语句的非常简单的用例,您可以查看 this fiddle I made这基本上是一个计数器,当达到 100 时会输出错误。
关于javascript - 将外部文件添加到头部 - 一个用于暂存,一个用于生产,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21090571/