函数作为函数和函数的区别在Javascript中作为参考

时间:2015-05-30 14:36:59

标签: javascript

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

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

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

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

2 个答案:

答案 0 :(得分:4)

这样的作业中的括号:

var k = myfunction();

表示分配给k的内容函数本身,而是调用函数的结果 - 函数的返回值,在其他词语的

没有括号,那么你确实将函数的引用分配给某个变量:

var f = myfunction;

执行此操作后,可以通过任一名称调用该函数:

f(); // same as myfunction();

JavaScript中的函数只是一种特殊类型的对象,但它们在很多方面都只是对象。它们可以具有属性,并且对它们的引用可以完全按照与对象的引用相同的方式传递。

使功能与众不同的是你可以调用它。对()(或()带参数)的函数的引用是函数调用,无论该引用来自何处。这就是为什么将函数调用赋值给变量,或者在调用其他函数时将函数引用作为参数传递的原因是有用的。

答案 1 :(得分:2)

var f = myfunction;

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

var k = myfunction();

这将创建一个变量k,该变量被赋予调用并执行myfunction()后产生的值。