我有一个函数,它调用另一个函数,诸如此类
var fn1 = function() { return 'bar'; };
var fn2 = function() {
return fn1;
};
var fn3 = function() {
return fn2;
};现在,这种情况可以继续下去。
因此,我想递归调用一个方法,直到我得到一个字符串/值,即最里面的return语句。
我试过这样做:
function p (val){
var res = val;
while(typeof(res)=="function"){res = p()}
return res;
}叫它像p(fn2);,但它似乎不起作用。我错过了什么。
发布于 2020-05-05 14:21:57
您需要在循环内重新分配res (或val),然后在最后返回它(不返回p):
var fn1 = function() {
return 'bar';
};
var fn2 = function() {
return fn1;
};
var fn3 = function() {
return fn2;
};
function p(val) {
while (typeof val === "function") {
val = val();
}
return val;
}
console.log(p(fn3));
发布于 2020-05-05 14:30:52
您可以尝试这样做:
var fn1 = function() {
return 'bar';
};
var fn2 = function() {
return fn1;
};
var fn3 = function() {
return fn2;
};
function p(val) {
if (typeof val === "function") {
return p(val())
}
return val;
}
console.log(p(fn3));https://stackoverflow.com/questions/61606912
复制相似问题