Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.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 - Fatal编程技术网

Javascript中函数作为函数和函数作为引用的区别

Javascript中函数作为函数和函数作为引用的区别,javascript,Javascript,我试图学习JavaScript,但无法理解以下代码行之间的区别 var f = myfunction; var k = myfunction(); function myFuncton() { alert("hello world"); } 因为我们不能用像C#这样的托管语言来做这样的事情。但是我看到过很多JavaScript代码示例,其中一个函数被分配给一个变量,在分号(;)之前没有开括号和闭括号,然后同一个函数被分配给另一个变量,带有开括号和闭括号,如上面的代码所示。这两个赋

我试图学习JavaScript,但无法理解以下代码行之间的区别

var f = myfunction;
var k = myfunction();

 function myFuncton()
 {
   alert("hello world");
 }

因为我们不能用像C#这样的托管语言来做这样的事情。但是我看到过很多JavaScript代码示例,其中一个函数被分配给一个变量,在分号(;)之前没有开括号和闭括号,然后同一个函数被分配给另一个变量,带有开括号和闭括号,如上面的代码所示。这两个赋值之间的区别是什么?为什么我们要在JavaScript中这样做?

类似这样的赋值中的括号:

var k = myfunction();
这意味着分配给
k
的不是函数本身,而是调用函数的结果,换句话说,函数的返回值

如果没有括号,则实际上是将函数的引用指定给某个变量:

var f = myfunction;
完成此操作后,可以使用以下任一名称调用函数:

f(); // same as myfunction();
JavaScript中的函数只是一种特殊类型的对象,但在大多数情况下它们实际上只是对象。它们可以有属性,对它们的引用可以完全按照传递对象引用的方式传递


函数的特殊之处在于可以调用它。对函数的引用后跟
()
(或带有参数的
()
)是函数调用,无论该引用来自何处。这就是为什么将函数调用赋值给变量,或在调用其他函数时将函数引用作为参数传递给其他函数是有用的。

赋值中的括号如下:

var k = myfunction();
var f = myfunction;
这意味着分配给
k
的不是函数本身,而是调用函数的结果,换句话说,函数的返回值

如果没有括号,则实际上是将函数的引用指定给某个变量:

var f = myfunction;
完成此操作后,可以使用以下任一名称调用函数:

f(); // same as myfunction();
JavaScript中的函数只是一种特殊类型的对象,但在大多数情况下它们实际上只是对象。它们可以有属性,对它们的引用可以完全按照传递对象引用的方式传递

函数的特殊之处在于可以调用它。对函数的引用后跟
()
(或带有参数的
()
)是函数调用,无论该引用来自何处。这就是为什么将函数调用赋值给变量,或者在调用其他函数时将函数引用作为参数传递是有用的

var f = myfunction;
这将创建一个新变量
f
,该变量引用
myfunction

var k = myfunction();
这将创建一个变量
k
,该变量被分配调用并执行
myfunction()
后产生的值

这将创建一个新变量
f
,该变量引用
myfunction

var k = myfunction();

这将创建一个变量
k
,该变量被赋值为调用并执行
myfunction()

后产生的值。事实上,我知道,但赋值给变量f更让我困惑。@user2913184我刚刚更新了答案;我还要补充几个字。事实上,我知道,但变量f的赋值对我来说更混乱。@user2913184我刚刚更新了答案;我还要补充几个词。OFC你可以用不同的语法在C#中做这两件事(即将函数引用赋给变量,而将函数调用的结果赋给变量);在c#中,这是如何在c#中声明变量以保存函数引用的方法:
public delegate int OperationDelegate(int p);公共类MyClass{private int Square(int p){return p*p;}public void Run(){OperationDelegate func;func=Square;func(10);func=i=>i*100;func(10);}
OFC,这两种操作都可以在C#中完成(即将函数引用赋值到变量中,而将函数调用的结果赋值到变量中)只是用不同的语法..你能分享一些代码来说明如何实现相同的东西,比如var f=myfunction;在c#中,这是如何在c#中声明变量以保存函数引用的方法:
public delegate int OperationDelegate(int p);公共类MyClass{private int Square(int p){return p*p;}public void Run(){OperationDelegate func;func=Square;func(10);func=i=>i*100;func(10);}