首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >return在js中最里面的return语句

return在js中最里面的return语句
EN

Stack Overflow用户
提问于 2020-05-05 14:19:24
回答 2查看 49关注 0票数 0

我有一个函数,它调用另一个函数,诸如此类

代码语言:javascript
复制
var fn1 = function() { return 'bar'; };
var fn2 = function() {
  return fn1;
};
var fn3 = function() {
  return fn2;
};

现在,这种情况可以继续下去。

因此,我想递归调用一个方法,直到我得到一个字符串/值,即最里面的return语句。

我试过这样做:

代码语言:javascript
复制
function p (val){
var res = val;
while(typeof(res)=="function"){res = p()}
return res;
}

叫它像p(fn2);,但它似乎不起作用。我错过了什么。

EN

回答 2

Stack Overflow用户

发布于 2020-05-05 14:21:57

您需要在循环内重新分配res (或val),然后在最后返回它(不返回p):

代码语言:javascript
复制
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));

票数 2
EN

Stack Overflow用户

发布于 2020-05-05 14:30:52

您可以尝试这样做:

代码语言:javascript
复制
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));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61606912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档