首页 > 解决方案 > JS,函数返回未定义而不是真假

问题描述

我有一个函数可以检查一些参数并相应地返回真/假。

我的问题是它返回 true (最后一个return true;),但是当我再次调用此函数并到达console.log(return 1)orconsole.log(return 2)时,该函数仅执行 console.log() 然后返回undefined而不是trueor false.map()我的假设是除非它完成运行,否则它不允许返回?

isFlashingUnderscore() {
  let count = 0;
  if (!_.isEmpty(this.currentElement.value)) {
    _.map(Object.keys(this.currentElement.value), key => {
      count++
      if (this.currentElement.value[key].object_type == 'date_range') {
        return false;
      } else if (this.currentElement.value[key].object_type == 'date') {
        if (count >= 2) {
          console.log('return 1');
          return false;
        } else {
          console.log('return 2');
          return true;
        }
      } else {
        return true;
      }
    })
  } else {
    console.log('returns this true')
    return true;
  }
}

标签: javascript

解决方案


不是您实际问题的答案,但您的代码可以简化。在 a 之后return,函数的其余部分不会被执行。你可以利用它:

isFlashingUnderscore(){
    let count = 0;
    if(!_.isEmpty(this.currentElement.value)){
        _.map(Object.keys(this.currentElement.value), key => {
            count++
            if (this.currentElement.value[key].object_type == 'date_range'){
                return false;
            }
            if(this.currentElement.value[key].object_type == 'date'){
                return false;
            }
            if (count >= 2) {
                return false;
            }
        })
    }
    return true;
}

通过简化它,可以更容易地理解正在发生的事情以及您不想发生的事情。


推荐阅读