Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在函数的变量赋值末尾没有()_Javascript_Function - Fatal编程技术网

Javascript 在函数的变量赋值末尾没有()

Javascript 在函数的变量赋值末尾没有(),javascript,function,Javascript,Function,我不明白为什么这一行的changeName后面没有()。我的逻辑是this.chnname被分配给函数return,函数的末尾有一个()。谢谢你的回答 function person(firstname, lastname, age, eyecolor) { this.firstname = firstname; this.lastname = lastname; this.age = age; this.eyecolor = eyecolor; thi

我不明白为什么这一行的changeName后面没有()。我的逻辑是
this.chnname
被分配给函数return,函数的末尾有一个()。谢谢你的回答

function person(firstname, lastname, age, eyecolor) {
    this.firstname = firstname;
    this.lastname = lastname;
    this.age = age;
    this.eyecolor = eyecolor;

    this.chngName = changeName;

    function changeName(name) {
        this.lastname = name;
    }
}

myMother = new person("Sally", "Rally", 48, "green");
myMother.chngName("Doe");
document.write(myMother.lastname);

该函数是赋值的,而不是调用的。否则
myMother.chnname(“Doe”)无法工作,因为该函数不返回其他函数。分配
changeName()
的返回值无论如何都没有意义,因为它不会返回任何内容(因此它会自动返回
未定义的


更详细的描述:函数是JavaScript中的一级对象。这意味着(除了一些其他东西外),它们可以像任何其他值/对象一样传递,并分配给任何变量。在这种情况下,将
changeName
函数分配给对象,该函数是
person
构造函数作用域的本地函数,使其从外部可用(实际上,从
newperson()
创建的对象可用的任何位置).

他们在那里做的是引用函数而不调用它

var x = foo;   // Assign the function foo to x
var y = foo(); // Call foo and assign its *return value* to y
在JavaScript中,函数是对象。适当的对象。这样你就可以到处传递对它们的引用


更多说明:

请不要缩进
{
。这很难看。而且,你的缩进样式根本不一致。我已经按应该的方式对你的代码进行了缩进。添加parens调用函数:在你的情况下,函数将稍后调用,因此你只希望引用不带parens的函数。有关详细信息,请参阅以下内容:谢谢Dave和所有人。为了让我更清楚的是,可以说y=x();与y=foo()相同;