我遇到这种情况:
JavaScript function A(){}
和另一个function B(){}
。
我以两种模式调用函数A:
B(A());
A();
当函数A被评估为参数并且何时作为独立执行时,是否有一种方法可以在代码中进行检测?
答案 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
}