javascript将变量传递给另一个文件

标签 javascript jquery

我想将变量传递给另一个文件,但直到现在我还不确定我做错了什么。

所以可以说在 file1.js 中我有:

$('.selector').on('click', function (e) {
  var getClicked = $(e.currentTarget).find('img').attr('data-type');

  if (getClicked === "360") {
    function detect360Src() {
        var imgUrl = $(this).find('img').attr('src');
    }
    view360.init();
  }
})

现在,我想将变量 imgUrl 及其值/数据传递给 file2.js,在其 init 函数中:

init: function() {
// imgURL variable/data here
}

我怎样才能实现这一目标?提前致谢

最佳答案

当 JS 在浏览器上下文中执行时,在全局作用域中声明的变量或在没有声明的情况下初始化的变量(没有 var 关键字)会自动在 window 对象中存储和读取。因此,如果您在文件顶部创建一个变量,则仍然可以在页面上运行的任何其他 JS 代码中访问它。

但是,由于此类变量会污染全局命名空间,因此最好创建一个存储所有共享数据的容器对象。在所有文件的顶部添加如下内容:

myContainer = myContainer || {};

如果 myContainer 全局对象不存在,则会创建它,但如果存在则不会更改任何内容。

默认情况下变量是全局的,这就是为什么许多库将自己包装在闭包中的原因。为了确保代码中的任何变量都不会被另一个文件中的代码覆盖,您应该执行以下操作:

myContainer = myContainer || {};

(function(){
    var someVariable; // not accessible in other files
    myContainer.sharedVariable = 10; // accessible in all files
})();

请注意,这仍然不“安全”,因为 myContainer 是全局的,并且可能被任何类似于 myContainer = Something 的代码覆盖。

关于javascript将变量传递给另一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33631386/

相关文章:

javascript - 如何在javascript中绘制图形?

javascript - 单击时删除 div 或 iframe

javascript - 在多个下拉列表中获取点击选项

javascript - 格式化 jQuery 自动完成以像下拉菜单一样扩展浏览器/窗口边缘

javascript - 将 ng-model 值传递给 angular 指令

javascript - 为什么空的 200 在 jQuery 中会导致失败?

javascript - JQuery - 如何在父元素之后插入元素?

jquery - Kendo AutoComplete 以编程方式设置选定的对象

javascript - AngularJS - 如何将数据传递到 Controller

javascript - Node.js forEach 的 aws 方法循环