请查看以下JavaScript代码段。这与javascript中的函数范围和提升有关。我无法调用window.innermost(),因为它未定义,因为它不在范围内。
除了将其附加到Windows对象之外,任何人都知道另一种方式。在这种情况下,Windows对象仍无法正常工作。
function outer(){
function callback() {
window.innermost = function() {
alert("hello from inner most")
}
}
}
(function caller() {
window.innermost(); // this is undefined
}());
答案 0 :(得分:4)
您必须同时调用外部和回调:
function outer(){
var callback = function() {
window.innermost = function() {
alert("hello from inner most")
}
}
callback(); // Call Callback
}
outer(); // Call outer
(function caller() {
window.innermost(); // should work
}());
如果 之前,则运行匿名函数,则window.innermost
不会被定义(或者如果未定义{你会)。
另外,请注意我将callback
设置为变量,这是在函数中定义函数的另一种方法。