Javascript 全局导入变量和IIFE
在设计类似于jQuery的模块时,web上的许多不同文章都宣称使用全局导入的伟大之处 所以,像这样做Javascript 全局导入变量和IIFE,javascript,Javascript,在设计类似于jQuery的模块时,web上的许多不同文章都宣称使用全局导入的伟大之处 所以,像这样做 (function(globalVariable){ globalVariable.printStuff = function(){ console.log(‘Hello World’) }; }(globalVariable)); …意味着我可以用如下方式调用函数: globalVariable.printStuff(); 问题是,每当我在控制台中运行此操作时,我总是得到:
(function(globalVariable){
globalVariable.printStuff = function(){
console.log(‘Hello World’)
};
}(globalVariable));
…意味着我可以用如下方式调用函数:
globalVariable.printStuff();
问题是,每当我在控制台中运行此操作时,我总是得到:
globalVariable undefined
我的问题是,我到底需要在哪里声明此变量才能使其工作?对于浏览器对象,它是存储所有全局变量的对象。下面的代码显示了具有全局变量的IIFEs的基本实现
//在窗口对象中设置变量“globalVariable”
window.globalVariable=10;
//访问IIFE中的全局变量“globalVariable”
函数全局变量{
console.logglobalVariable;
}全球可变 对于这样一个真正简单的模块,你不需要任何生活。只需编写一个对象文字:
var globalVariable = {
printStuff: function() {
console.log('Hello World');
}
};
globalVariable.printStuff();
如果你想使用IIFE范围,你仍然需要在某处创建对象。可能在模块内部或外部:
var globalVariable = (function() {
var module = {};
var localVariable = 'Hello World';
module.printStuff = function() {
console.log(localVariable);
};
return module;
}());
globalVariable.printStuff();
globalVariable.printStuff怎么了{/*这是什么意思?*/};?虽然这不是解决方案,但要小心使用卷曲引号“Hello World”,你应该使用常规引号。另外,您是否真的定义了一个名为globalVariable的变量,并将其传递给您的IIFE?我希望此函数中的所有函数都不会污染全局名称空间,并尽量减少与其他脚本的冲突。所以,我希望像globalVariable这样的东西能让我瞄准那些私有函数。。它应该是全局可变的。printsuff=function就是这样!我试图将globalVariable声明为var globalVariable;。为什么需要将其定义为对象?因为您希望在其上创建属性…当然:现在就有意义了。感谢您的澄清。我为什么要这样做?我的目的是向您解释全局变量如何在JavaScript中使用IIFE工作
var globalVariable = {};
(function(module) {
var localVariable = 'Hello World';
module.printStuff = function() {
console.log(localVariable);
};
}(globalVariable));
globalVariable.printStuff();