我是javascript的新手并且有一个简单的问题。说我有以下代码:
function entryPoint()
{
callFunction(parameter);
}
function callFunction(parameter)
{
... //do something here
var anotherFunction = function () { isRun(true); };
}
我的问题是,当调用callFunction(parameter)
并声明变量anotherFunction
时,isRun(true)
是否在此实例化期间实际执行?我认为它没有,并且另一个函数的内容只是“存储”在变量中,以便在行的某个地方逐行执行调用anotherFunction()
。任何人都可以澄清功能混乱吗?
答案 0 :(得分:5)
似乎混淆了这行代码
var anotherFunction = function () { isRun(true); };
这声明了一个function / lambda类型的变量。 lambda声明它没有运行。在通过变量
调用它之前,它内部的代码不会执行anotherFunction(); // Now it runs
答案 1 :(得分:4)
你几乎完美地描述了它。
anotherFunction
只接收对新创建的Function Object
的引用(是的,函数也是此语言中的对象),但它不会被执行。
你可以通过调用
来执行它anotherFunction();
例如。
答案 2 :(得分:1)
您可以编写一个简单的测试:
entryPoint();
function entryPoint()
{
alert("In entryPoint");
callFunction();
}
function callFunction()
{
alert("In callFunction");
var anotherFunction = function () { isRun(); };
}
function isRun()
{
alert("In isRun");
}
答案是否定的,isRun()不会被调用。