2

对于下面的函数 doStuff,是否可以调用 sayHello(在函数 dostuff 之外),即使它与内部函数同名?

var sayHello = function(){
    alert("Called from outside the function");
}
function doStuff(){
    sayHello();
    function sayHello(){
        alert("Called from inside the function. How can I call the sayHello function that is outside the scope of doStuff?");
    }
}
    doStuff();
​

在上面的 Javascript 代码中,函数 sayHello(这是 2 个函数的名称)是从函数内部而不是外部调用的。

这是在 jsFiddle 上:http: //jsfiddle.net/5MSTU/

4

2 回答 2

3

如果外部函数是全局的,您可以将其定位为window对象的成员。

window.sayHello();

否则,您将需要使用不同的名称。JavaScript 允许您隐藏变量,因此与外部变量同名的内部变量有效地禁用了对外部变量的访问。

于 2012-09-30T22:15:34.170 回答
-1

--更新以删除此处的纯错误代码--

你可以在前面给它起别名。但我不知道这有多大用处。

var sayHello = function(){
    alert("Called from outside the function");
};

var aliasForSayHello = sayHello;

function doStuff() {
    function sayHello(){
        alert("Called from inside the function. How can I call the sayHello function that is outside the scope of doStuff?");
       aliasForSayHello();
    }       

    sayHello();

}

doStuff();

​
于 2012-09-30T22:25:39.090 回答