如何访问在严格上下文之外定义的变量?

时间:2018-10-08 09:27:45

标签: javascript

假设我有两个javascript文件:

  1. Master.js:包含变量初始化并加载child.js文件
  2. Child.js:包含一组特定的功能

Master.js的内容是这样的:

<script src="child.js"></script>

<script>
    var GlobalVariables = {
        'baseUrl": "localhost"
    };

    $(document).ready(function() {
        Child.initialize(true);
    });
</script>

您可以看到Master.js文件加载了Child.js文件并创建了一个GlobalVariables,我需要在Child中使用它。

这是我到目前为止在Child.js中所做的事情:

window.Child = window.Child || {};

(function (exports){
   "use strict";

   exports.GlobalVariables= {};

   exports.initialize = function (bindEventHandlers) {
       bindEventHandlers = bindEventHandlers || true;

       exports.GlobalVariables= GlobalVariables;
   }

   var label = $('#someLabel').html(GlobalVariables.baseUrl);

我也使用GlobalVariables定义了变量exports.,但是我只能在GlobalVariables.baseUrl函数的initialize中使用label来访问它。得到:

  

未捕获的ReferenceError:未定义GlobalVariables

我做错了什么?

更新

好吧,感谢@Quentin回答,我能够对我的代码进行以下编辑:

exports.initialize = function (bindEventHandlers) {
   bindEventHandlers = bindEventHandlers || true;

   if (bindEventHandlers) {
        _bindEventHandlers();
   }
}

function _bindEventHandlers() {
  var label = $('#someLabel').html(GlobalVariables.baseUrl);
}

1 个答案:

答案 0 :(得分:1)

child.js 中,您尝试读取内联脚本中GlobalVariables的值,然后声明GlobalVariables并给它一个值。

必须先声明变量,然后才能从其中读取