跨不同作用域访问函数
Accessing functions across different scopes
我正在努力理解以下场景,其中我在一个范围中定义了一个函数,并希望在另一个范围内访问它。
我有两个不同的JavaScript文件,helper.js和main.js,它们都有一个自调用函数:
helper.js:
var outerShowData;
(function(){
var innerShowData = function(param1, param2){
alert("Data : "+ param1 +" - "+ param2);
}
outerShowData = innerShowData;
})();
main.js:
(function(){
outerShowData("alpha", "beta");
outerShowData("gamma", "theta");
})();
如果我先在页面中包含helper.js,然后再包含main.js,这在Firefox、Safari和Google Chrome中非常适用。但是它在IE8中不起作用。
有人能指出我在这里做错了什么吗?
我编写自调用函数只是为了不弄脏全局范围。在这个方向上的任何帮助都会对我有很大帮助。
// Your code would work identically with or without this variable declaration
var outerShowData;
(function(){
// This is a local variable, and cannot be accessed outside the containing function()
var innerShowData = function(param1, param2){
alert("Data : "+ param1 +" - "+ param2);
}
// This assigns a value to a global variable
outerShowData = innerShowData;
})();
您的outerShowData
变量是全局的。它可以被任何JavaScript环境中未损坏的任何其他代码访问。如果这段代码给你的IE8带来了问题,那么IE8似乎坏了,认为你的问题更可能存在于代码的其他地方。IE8不正确支持全局变量将是一个基本问题。
您可以尝试设置并调用window.outerShowData
,它会显式地创建一个全局变量。
我编写自调用函数只是为了不弄脏全局范围。
这有点傻。无论哪种方式,您都在"弄脏"全局范围,只是现在您使用了一堆不必要的代码和间接寻址。
相关文章:
- 访问函数外部的变量
- 从嵌套函数访问函数属性
- 访问函数对象的上下文属性|如何
- jQuery 无法使用 AJAX 调用访问函数内部的函数参数
- 访问函数中的函数名称
- 访问函数'的属性
- 访问函数内部的Polymer方法
- 从另一个文件访问函数的返回值
- 如何从AngularJS外部访问函数
- 如何在 JavaScript 中访问函数中的其他属性值作为对象属性值
- 从require()'d文件访问函数
- 如何访问函数中的变量
- JavaScript 访问函数构造函数中的“this”
- 跨不同作用域访问函数
- 访问函数内部的变量
- jQuery插件+AMD=如何访问函数
- 如何在javascript中访问函数内部的相同变量名
- 可以'无论我做什么,都无法访问函数外的数组
- 如何从module.exports访问函数
- 无法't访问函数中的对象