我正在尝试让回调调用内部的函数
$(document).ready(..)
如何从 this 外部调用函数?
例如:
$(document).ready( function(foo) {
var bar = function() { ... };
});
// How do I call bar() from here?
这取决于您想要如何确定范围。如果您只想让 bar 处于全局范围内,那么只需这样做:
$(document).ready( function(foo) {
var bar = function() { ... };
window.bar = bar;
});
请记住,在 JavaScript 中,唯一具有作用域的代码块是函数,因此在
if{}
、while{}
和其他类型的代码块中声明的变量对于它们所属的任何函数都是全局的,除非未声明它们。
如果您使用变量而不声明它,则与执行相同:
// Both of these variables have global scope, assuming
// 'bar' was never declared anywhere above this
window.foo = "Hello World!";
bar = "Hello World!";
所以上面的例子可以通过这样做来缩短一行:
$(document).ready( function(foo) {
window.bar = function() { ... };
});
不要在ready函数中声明所有内容
$(document).ready( function() {
...
bar();
});
function bar() {
...
}
您可以在就绪函数之外声明 bar。 那时它将是全球性的。
var bar;
$(document).ready( function(foo) {
bar = function() { ... };
});
如果你想从外部调用
bar()
,为什么不在外部声明它,并从内部作用域传递你需要的任何参数呢?
function bar(baz, qix) { ...};
$(document).ready(function(foo) {
bar(whatever, whatnot);
});
bar(something, else);
读完你的评论后,也许你想做这样的事情。如果您想要访问
myUtilities
内部和外部的内容,请使用 ready
最大限度地减少全局命名空间污染。
var myUtilities={};
$(document).ready( function(foo) {
myUtilities.bar = function() { ... };
});
// How do I call bar() from here?
a = myUtilities.bar();
抱歉,未经测试。那里可能有一两个愚蠢的语法错误。