为什么“函数sayHi.alternate(){}”不起作用?

时间:2011-09-09 04:39:25

标签: javascript function public

我很难理解Javascript中的静态范围。任何人都可以解释下面两个函数之间的区别

如果我这样做,它可以正常工作

function sayHi(){
        alert("Hi");
    }
    sayHi.alternate=function(){
        alert("Hola");
    }
    sayHi();
    sayHi.alternate();

但如果我做的话,那就去做吧

function sayHi(){
        alert("Hi");
    }
    function sayHi.alternate(){
        alert("Hola");
    }
    sayHi();
    sayHi.alternate();

像往常一样谢谢

3 个答案:

答案 0 :(得分:3)

function sayHi.alternate(){
    alert("Hola");
}

...会给你一个语法错误。那是因为你无法命名你的函数sayHi.alternate

但是,由于Javascript中的所有内容都是对象,包含函数,您只需将sayHi函数视为对象,并使用以下方法添加新方法:

sayHi.alternate = function(){
    alert("Hola");
}

答案 1 :(得分:3)

当你写function sayHi.alternate时,你正试图创建一个名为sayHi.alternate的函数。函数的名称中不能包含句点,因此sayHi.alternate是无效的函数名称。

创建sayHi.alternate= function时,您在对象alternate内创建了一个名为sayHi的函数。

答案 2 :(得分:0)

这不是有效的javascript:

function sayHi.alternate(){

以这种方式声明函数时,无法指定属性。您只能定义要用于该功能的名称。这就是当您将其分配给对象属性或分配给变量时使用其他形式的原因。