JavaScript按条件给变量赋值不生效,控制台始终输出0如何解决?
问题原因
- 你的代码里所有条件分支都使用了
return语句,会直接终止当前作用域的后续代码执行,位于分支后的console.log(a)永远不会被触发。如果代码直接写在全局作用域而非函数内部,非函数内的return还会直接抛出语法错误。 - 每个条件分支内部都用
let重新声明了变量a,let是块级作用域声明关键字,分支块内声明的a和外部初始定义的a是完全独立的两个变量,根本不会修改外部a的取值。 - 代码中的
value0、value1、valuex均为未定义变量,直接调用会抛出引用错误。
修正方案
如果要实现按条件为已声明的变量a赋值,直接修改a的取值即可,不需要重新声明,也不需要加return:
// 先定义好要赋值的目标值,这里是示例数值,可按需求替换 const value0 = '匹配a=0的结果' const value1 = '匹配a=1的结果' const valuex = '其他情况的结果' let a = 0 if (a == 0) { a = value0 } else if (a == 1) { a = value1 } else { a = valuex } console.log(a)
如果你的业务场景需要把判断逻辑封装为函数,也可以采用如下写法:
const value0 = '匹配a=0的结果' const value1 = '匹配a=1的结果' const valuex = '其他情况的结果' function getAValue(originA) { if (originA == 0) { return value0 } else if (originA == 1) { return value1 } else { return valuex } } let a = getAValue(0) console.log(a)
内容的提问来源于stack exchange,提问作者latins
相关产品推荐
相关产品推荐

