javascript - 将外部文件添加到头部 - 一个用于暂存,一个用于生产

标签 javascript

我需要将外部 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/

相关文章:

javascript - 困难的网络动画

javascript - 如何获取 knockout 同级数据绑定(bind)属性

javascript - 使用 Javascript 删除 vlc 工具

javascript - 为什么这段代码在 JavaScript 中不会抛出错误?

javascript - 在将视频上传到数据库之前,如何对 native expo进行压缩?

javascript - ggggleClass 不删除初始 div img 源

javascript - Vue.js 3 v-if 三元函数,如何将对象作为条件传递

javascript - 配置 ContentFlow 时出现问题

javascript - settimeout 没有延迟

javascript - 缩放具有复杂动画路径的 SVG