Javascript:两个自执行函数如何相互访问
我知道Javascript自动执行匿名函数是什么:Javascript:两个自执行函数如何相互访问,javascript,design-patterns,anonymous-function,Javascript,Design Patterns,Anonymous Function,我知道Javascript自动执行匿名函数是什么: (function(){ console.log('Hello World!'); })(); 我知道你可以传入参数: (function(window){ window.location(...); })(window); 但是如果我有两个自动执行的匿名函数,那么每个函数可以访问另一个吗?具体来说,第一个函数如何从第二个函数调用一个方法,并向其传递一个变量 (function(){ function foo () {
(function(){
console.log('Hello World!');
})();
我知道你可以传入参数:
(function(window){
window.location(...);
})(window);
但是如果我有两个自动执行的匿名函数,那么每个函数可以访问另一个吗?具体来说,第一个函数如何从第二个函数调用一个方法,并向其传递一个变量
(function(){
function foo () {
return 'foo';
}
// How can I call "bar('my name is')"
})();
(function(){
function bar (str) {
return str + ' bar' ;
}
})();
谢谢收听。他们不能,这就是重点。通过这样包装代码,从外部无法访问它 如果你不关心这些无障碍保护,你可以做的其他事情是:
function foo() { bar() } // call bar
foo(); // execute immediately
function bar() { // do stuff }
bar(); // also execute immediately
他们不能,这就是重点。通过这样包装代码,从外部无法访问它 如果你不关心这些无障碍保护,你可以做的其他事情是:
function foo() { bar() } // call bar
foo(); // execute immediately
function bar() { // do stuff }
bar(); // also execute immediately
如果在特定执行上下文中声明或初始化函数,则只能从同一执行上下文或在其作用域链上具有第一个执行上下文的另一个执行上下文访问该函数。外部上下文是否“匿名”并不重要。例如,在以下方面:
(function(){
function foo () {return 'foo';}
})();
foo就像你做过的一样难以接近:
(function(){
var foo = function () {return 'foo';};
})();
或
在这种情况下,可以使用闭合:
var foo = (function(){
var /* variables to hold in a closure */
function foo () {return 'foo';}
// Return a reference to foo
// foo has a closure to this execution context
return foo;
})();
(function() {
// call foo here and pass parameters
foo(...);
}());
你也可以有这样的生活:
var foo = (function(){
var /* variables to hold in a closure */
// Return a reference to a function
// that has a closure to this execution context
return function () {return 'foo';}
}());
如果在特定执行上下文中声明或初始化函数,则只能从同一执行上下文或在其作用域链上具有第一个执行上下文的另一个执行上下文访问该函数。外部上下文是否“匿名”并不重要。例如,在以下方面:
(function(){
function foo () {return 'foo';}
})();
foo就像你做过的一样难以接近:
(function(){
var foo = function () {return 'foo';};
})();
或
在这种情况下,可以使用闭合:
var foo = (function(){
var /* variables to hold in a closure */
function foo () {return 'foo';}
// Return a reference to foo
// foo has a closure to this execution context
return foo;
})();
(function() {
// call foo here and pass parameters
foo(...);
}());
你也可以有这样的生活:
var foo = (function(){
var /* variables to hold in a closure */
// Return a reference to a function
// that has a closure to this execution context
return function () {return 'foo';}
}());
如果您需要这样做,可能会有更好的设计模式。你能提供实现细节或某种背景吗?把第一个生命放在第二个生命中。如果你需要这样做的话,你会想要使用更好的设计模式。你能提供实现细节或某种背景吗?把第一个生命放在第二个生命中。你会想使用