javascript - JS,函数返回未定义而不是真假
问题描述
我有一个函数可以检查一些参数并相应地返回真/假。
我的问题是它返回 true (最后一个return true;
),但是当我再次调用此函数并到达console.log(return 1)
orconsole.log(return 2)
时,该函数仅执行 console.log() 然后返回undefined
而不是true
or 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;
}
}
解决方案
不是您实际问题的答案,但您的代码可以简化。在 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;
}
通过简化它,可以更容易地理解正在发生的事情以及您不想发生的事情。
推荐阅读
- reactjs - React:有没有办法缓存组件或防止每次渲染时出现多余的 HTTP 调用
- swift - Swift didReceiveRemoteNotification() Firebase 未被调用
- google-apps-script - 将数据写入谷歌应用脚本中的多个非连续单元格
- sql-server - 处理“批处理执行时发生错误”的一般方法
- git - 如何删除 github 上的文件或文件夹?
- python - SciPy 稀疏矩阵“.multiply”不返回预期结果?
- html - CSS 网格项目在约束下扩展
- ffmpeg - FFmpeg - 裁剪图像空白
- flutter - TabBar 小部件内的动态选项卡而不是静态选项卡
- r - 如何将 von mises 分布拟合到我的数据以生成随机样本