我想将变量传递给另一个文件,但直到现在我还不确定我做错了什么。
所以可以说在 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/