Javascript函数调用上下文

时间:2013-05-19 17:39:26

标签: javascript

我遇到这种情况:

JavaScript function A(){}和另一个function B(){}

我以两种模式调用函数A:

  • 作为函数B的参数 - B(A());
  • 以独立形式显示 - A();

当函数A被评估为参数并且何时作为独立执行时,是否有一种方法可以在代码中进行检测?

2 个答案:

答案 0 :(得分:2)

  

当函数A被评估为参数并且何时作为独立函数执行时,是否有一种方法可以在代码中进行检测?

不,因为那不是正在发生的事情。以下两个代码块或多或少相同,除了var

的额外内存。
function Implied() {
    B(A());
}

function Explicit() {
    var retA = A();
    B(retA);
}

在这两种情况下,都会从父函数调用A,而不是B

答案 1 :(得分:0)

我不确定你为什么要那样做,但你确实有几个选择。

一个是简单地传递其他参数。这是你应该做的。

另一种选择是使用call()apply()来设置this的值。

function B() {
    var context = 'some value';
    A.call(context);  // `this` inside of A will be set to the value of context
}