JavaScript中switch case失效:CurrectcoinValue无法正确赋值
问题解决:CurrectcoinValue无法获取分支值的原因及修复方案
问题根源
- const变量不可重新赋值:你用
const声明了CurrectcoinValue,const定义的变量无法被重新赋值,这是语法层面的硬限制。 - 基本类型值传递特性:JavaScript中字符串属于基本类型,函数参数传递时会创建原变量的副本,函数内修改的只是这个局部副本,不会影响外部的原变量。
修复方案
方案1:让函数返回结果(推荐)
直接让函数返回对应分支的值,外部变量用let声明(允许重新赋值)来接收结果:
let CurrectcoinValue = "null"; const symbol = "usdt"; // 接收函数返回的对应值 CurrectcoinValue = casim(symbol); console.log("result : " + CurrectcoinValue); function casim(symbol) { switch (symbol) { case "btc": return "BTC"; case "eth": return "ETH"; case "usdt": return "USDT"; case "usdc": return "USDC"; default: return 1; } }
方案2:用对象实现引用传递
如果需要通过函数直接修改外部变量,可以把变量放在对象中(对象是引用类型,传递的是引用地址):
const coinObj = { CurrectcoinValue: "null" }; const symbol = "usdt"; casim(symbol, coinObj); console.log("result : " + coinObj.CurrectcoinValue); function casim(symbol, coinObj) { switch (symbol) { case "btc": coinObj.CurrectcoinValue = "BTC"; break; case "eth": coinObj.CurrectcoinValue = "ETH"; break; case "usdt": coinObj.CurrectcoinValue = "USDT"; break; case "usdc": coinObj.CurrectcoinValue = "USDC"; break; default: coinObj.CurrectcoinValue = 1; } }
原代码的问题总结
- 用
const声明CurrectcoinValue,即使函数能修改外部变量,也会触发赋值报错。 - 函数参数中的
CurrectcoinValue是局部变量,和外部变量完全独立,修改局部变量不会同步到外部。
内容的提问来源于stack exchange,提问作者itamar h
相关产品推荐
相关产品推荐

