调用与内部函数同名的外部函数

时间:2012-09-30 22:14:25

标签: javascript

对于下面的函数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/

2 个答案:

答案 0 :(得分:3)

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

window.sayHello();

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

答案 1 :(得分:-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();

​