我尝试为嵌套 JavaScript 函数提供全局范围的尝试不起作用:
//DECLARE FUNCTION B IN GLOBAL SCOPE
function B;
function A() {
//DEFINE FUNCTION B INSIDE NEST
B() {
alert("function B is running");
}
}
//CALL FUNCTION B FROM GLOBAL SCOPE
B();
这只是好奇心——你是对的,我确实没有任何充分的理由想要这样做。
TIA - 我没有 SO 帐户来回复您的答案......
function B;
只会产生语法错误。
您可以使用函数表达式 https://developer.mozilla.org/en/JavaScript/Reference/Functions_and_function_scope#The_function_expression_(function_operator)。由于函数是第一类对象,因此您可以将函数分配给变量:
var B; // declare (global) variable (outer scope)
function A() {
// assign a function to it
B = function() {
alert("function B is running");
};
}
// we have to call A otherwise it won't work anyway
A();
// call B
B();
你也可以让A
返回一个函数:
function A() {
return function() {
alert("function B is running");
};
}
B = A();
这将使之间的关系A
and B
更清楚一点。
当然,您始终可以通过省略来定义全局变量var
,但您应该非常小心地使用它。尽可能少地使用全局变量。
function A() {
B = function() {
alert("function B is running");
};
}
我敢打赌有更好的方法来做到这一点,具体取决于您的实际目标是什么。
有关函数和函数范围的更多信息。 https://developer.mozilla.org/en/JavaScript/Reference/Functions_and_function_scope
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)