为什么不't "函数说嗨.Alternate () {}"工作

Why doesn't "function sayHi.alternate () {}" work?

本文关键字:quot 工作 Alternate 函数 为什么不      更新时间:2023-09-26

我很难理解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();

照例谢谢

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

…会给你一个语法错误。这是因为你不能将你的函数命名为sayHi.alternate

然而,因为Javascript中的一切都是对象,包括函数,你可以简单地把你的sayHi函数作为对象,并添加一个新方法给它:

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

当你写function sayHi.alternate时,你试图创建一个名为sayHi.alternate的函数。函数名中不能包含句号,所以sayHi.alternate是无效的函数名。

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

这是无效的javascript:

function sayHi.alternate(){

在以这种方式声明函数时不能分配属性。您只能定义要用于函数的名称。这就是为什么当你将它赋值给对象属性或变量时使用另一种形式。