我试图学习JavaScript,但无法理解以下代码行之间的区别。
var f = myfunction;
var k = myfunction();
function myFuncton()
{
alert("hello world");
}
因为我们不能用像C#这样的托管语言来做这样的事情。但是我看到了很多JavaScript代码示例,其中函数在分号(;)之前没有打开和关闭括号的情况下分配给变量,然后将相同的函数分配给具有开括号和右括号的另一个变量,如上面的代码所示。这两个作业之间有什么区别?为什么我们在JavaScript中这样做?
答案 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()
后产生的值。