将函数分配给javascript中的变量是否会运行该函数

将函数分配给javascript中的变量是否会运行该函数,javascript,html,javascript-events,var,Javascript,Html,Javascript Events,Var,下面我有三个简单的程序,有不同的输出。我有点困惑,为什么我会得到不同的输出。当你把一个函数赋给一个变量时,会发生什么?除非有括号(即myfunction()),否则它不会运行吗?我还很困惑JavaScript在调用函数时如何允许函数后面的括号为“可选”。有人能澄清一下吗?我只懂Java,所以这对我来说是全新的领域。谢谢 // ------First-------------------------------- var x = 9; function myfunction (){ x = 3

下面我有三个简单的程序,有不同的输出。我有点困惑,为什么我会得到不同的输出。当你把一个函数赋给一个变量时,会发生什么?除非有括号(即myfunction()),否则它不会运行吗?我还很困惑JavaScript在调用函数时如何允许函数后面的括号为“可选”。有人能澄清一下吗?我只懂Java,所以这对我来说是全新的领域。谢谢

// ------First--------------------------------
var x = 9;
function myfunction (){
  x = 3;
}
var w = myfunction;
w();
console.log(x);
//output is 3


// ---------Second -----------------------------
var x = 9;
function myfunction (){
  x = 3;
}
var w = myfunction;
console.log(x);
//output is 9


// ---------Third -----------------------------
var x = 9;
function myfunction (){
  x = 3;
}
var w = myfunction();
console.log(x);
//output is 3

不,没有。与任何其他值一样,按名称对函数的引用只是对值的引用。如果没有
()
操作符,它就不是函数调用

调用函数时,括号不是可选的,除非通过
new
运算符调用函数。因此:

function foo() {
  console.log("hi!");
}

var otherFoo = foo; // no function call
var obj = new foo;  // function call via "new"
var x = foo();      // function call via "()"

不,没有。与任何其他值一样,按名称对函数的引用只是对值的引用。如果没有
()
操作符,它就不是函数调用

调用函数时,括号不是可选的,除非通过
new
运算符调用函数。因此:

function foo() {
  console.log("hi!");
}

var otherFoo = foo; // no function call
var obj = new foo;  // function call via "new"
var x = foo();      // function call via "()"

谢谢你,波蒂。你能给我举一个“新接线员”的例子,以及这个电话是怎么打的吗?谢谢你。你能举一个“新接线员”的例子,以及这个电话将如何发生。。。