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

Does assigning a function to a variable in javascript run the function

本文关键字:函数 变量 是否 运行 分配 javascript      更新时间:2023-09-26

下面有三个具有不同输出的简单程序。我有点困惑,为什么我会得到不同的输出。当你把一个函数赋给一个变量时,会发生什么?除非你有括号(即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 "()"