JavaScript如何获取if/else语句分支内定义的变量供其他函数使用
解决else分支内定义变量无法在外部使用的问题
- 根本原因:你在else分支内用
const声明的e_id属于块级作用域变量,仅在else对应的{}包裹的代码块内有效,块外无法直接访问。
方案1:提升变量声明作用域(适用于同函数内后续代码使用)
把e_id的声明提到if-else块的外部,用let声明(不能用const,因为const必须声明时赋值,且后续不能修改),在else分支内直接赋值即可,示例代码:
// if分支外部提前声明,作用域覆盖后续所有同层级代码 let e_id = null if (!e){ await knex('empresa').insert({ razao_social, cnpj }) }else{ e_id = e.id console.log(e_id) // 不需要提前返回可以删除return,需要的话可以携带e_id返回 } // 此处已经可以正常访问e_id,可直接传递给其他函数 if(e_id) { yourTargetFunction(e_id) }
方案2:通过函数返回值传递(适用于跨函数调用场景)
如果这段逻辑封装在单独函数中,直接修改else分支的return语句,把e_id作为返回值返回,调用该函数时即可拿到变量值再传递给其他函数,示例代码:
// 封装逻辑函数 async function processEmpresa(e, razao_social, cnpj) { if (!e){ await knex('empresa').insert({ razao_social, cnpj }) return null }else{ const e_id = e.id console.log(e_id) return e_id } } // 调用函数获取返回值 const resultEId = await processEmpresa(e, razao_social, cnpj) // 传递给其他需要使用的函数 if(resultEId) { yourTargetFunction(resultEId) }
内容的提问来源于stack exchange,提问作者Matheus Ferreira
相关产品推荐
相关产品推荐

