4

我是 javascript 新手,有一个快速的问题。假设我有以下代码:

function entryPoint()
{
   callFunction(parameter);
}

function callFunction(parameter)
{
   ... //do something here
   var anotherFunction = function () { isRun(true); };
}

我的问题是,何时callFunction(parameter)调用并声明了变量,在此实例化期间anotherFunction是否实际执行?isRun(true)我认为它没有,并且 anotherFunction 的内容仅“存储”在变量中,当在某处进行调用时,实际逐行执行anotherFunction()。任何人都可以澄清功能混乱吗?

4

3 回答 3

5

似乎混乱的是这行代码

var anotherFunction = function () { isRun(true); };

这声明了一个函数/lambda 类型的变量。lambda 被声明它没有运行。在你通过变量调用它之前,它里面的代码不会执行

anotherFunction(); // Now it runs
于 2012-04-11T18:00:35.200 回答
4

你几乎完美地描述了它。

anotherFunction只是接收到一个新创建的引用Function Object(是的,在这种语言中,函数也是对象)但它没有被执行。

你可以通过调用来执行它

anotherFunction();

例如。

于 2012-04-11T18:00:43.360 回答
1

你可以像这样编写一个简单的测试:

entryPoint();

function entryPoint()
{
    alert("In entryPoint");
    callFunction();
}

function callFunction()
{
    alert("In callFunction");
    var anotherFunction = function () { isRun(); };
}

function isRun()
{
    alert("In isRun");
}

​ 而且,答案是否定的,isRun() 不会被调用。

于 2012-04-11T18:07:33.257 回答