【问题标题】:Does assigning a function to a variable in javascript run the function在javascript中将函数分配给变量是否会运行该函数
【发布时间】:2013-12-11 16:59: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

【问题讨论】:

    标签: javascript var


    【解决方案1】:

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

    当通过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 "()"
    

    【讨论】:

    • 谢谢尖头。您能否举一个“新接线员”的示例以及通话将如何发生...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多