总结一下,我的JS文件目前看起来像这样://ALL GLOBAL VARIABLES FIRST DECLARED HEREvar var1 , var2 ,var3$(document).ready(function(){//JQUERY STUFF});//ALL FUNCTIONS THAT NEED TO BE GLOBAL DECLARED HEREfunction myFunction(){//do some stuff here}我遇到了问题,因为我在某些地方调用的函数似乎在调用时未声明或全局不可用.现在一切都非常混乱! 有人可以建议用带有某些JS函数,对象和变量的大js/jquery文件布局的最佳方法.这些函数可以在文件中的任何地方引用. 更新: 因此,为了简化此正确操作(请参阅我的评论)?window.MainModule = (function($, win, doc, undefined) {//WHAT IS BEING PASSED IN HERE? var foo, bar, modules; //VARIABLES ACCESSIBLE ANYWHERE var modules["foobar"] = (function() {//WHAT IS A MODULE? WHEN WOULD I USE A SEPERATE MODULE? var someFunction = function() { ... };//DECLARING MY FUNCTIONS? ... return { init: someFunction,//IS THIS WHERE I USE/BIND MY FUNCTIONS TO EVENTS AND ELEMENTS? ... }; }()); // hoist a variable into global scope window.Global = someLocal; return { init: function() {//FUNCTION TO INIT ALL MODULES? for (var key in modules) { modules[key].init(); } } };}(jQuery, this, document));解决方案模块部分的定义不正确,这是一个经过整理的示例.window.MainModule = (function($, win, doc, undefined) { var modules = {}; // -- Create as many modules as you need ... modules["alerter"] = (function(){ var someFunction = function(){ alert('I alert first'); }; return { init: someFunction }; }()); modules["alerter2"] = (function(){ var someFunction = function(){ alert('I alert second'); }; return { init: someFunction }; }()); return { init: function(){ for (var key in modules){ modules[key].init(); } } };}(jQuery, this, document));$(window.MainModule.init);My javascript file is getting pretty big (3000+ lines) and I'm getting confused as to how to layout my file and delare functions so that they can called anywhere in the file.To summarise my JS file looks a little like this at the moment://ALL GLOBAL VARIABLES FIRST DECLARED HEREvar var1 , var2 ,var3$(document).ready(function(){//JQUERY STUFF});//ALL FUNCTIONS THAT NEED TO BE GLOBAL DECLARED HEREfunction myFunction(){//do some stuff here}I am running into problems with this as some functions I call in places don't seem to be declared at the time of calling or aren't available globaly. It's all very confusing now! Could someone suggest the best way to layout a big js/jquery file with certain JS Functions, Objects and Variables available to be referenced anywhere in the file.UPDATE:So to simplify it this correct (see my comments)?window.MainModule = (function($, win, doc, undefined) {//WHAT IS BEING PASSED IN HERE? var foo, bar, modules; //VARIABLES ACCESSIBLE ANYWHERE var modules["foobar"] = (function() {//WHAT IS A MODULE? WHEN WOULD I USE A SEPERATE MODULE? var someFunction = function() { ... };//DECLARING MY FUNCTIONS? ... return { init: someFunction,//IS THIS WHERE I USE/BIND MY FUNCTIONS TO EVENTS AND ELEMENTS? ... }; }()); // hoist a variable into global scope window.Global = someLocal; return { init: function() {//FUNCTION TO INIT ALL MODULES? for (var key in modules) { modules[key].init(); } } };}(jQuery, this, document)); 解决方案 The modules section isn't properly defined ... here's a slightly tidied up example.window.MainModule = (function($, win, doc, undefined) { var modules = {}; // -- Create as many modules as you need ... modules["alerter"] = (function(){ var someFunction = function(){ alert('I alert first'); }; return { init: someFunction }; }()); modules["alerter2"] = (function(){ var someFunction = function(){ alert('I alert second'); }; return { init: someFunction }; }()); return { init: function(){ for (var key in modules){ modules[key].init(); } } };}(jQuery, this, document));$(window.MainModule.init); 这篇关于Javascript:声明要全局使用的函数的最佳方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
10-25 08:34