You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在switch语句中不预先存变量直接访问条件处函数的返回值

结论

原生JavaScript没有提供可以直接访问switch判断表达式返回值的内置语法,你想要的类似this的隐式调用方式不存在。


可行的替代方案

如果你只是不想在switch语句外部定义变量污染外层作用域,可以在switch的判断表达式内声明块级作用域变量,这个变量仅在switch块内部可访问,符合你不想“预先存储”的需求:

switch (const res = doSomething()) {
    case "1":
        return 1;
    case "2":
        return 2;
    default:
        console.log(res); // 可以正常拿到doSomething的返回值
}

如果你完全不想声明任何变量,只有当doSomething()是无副作用的纯函数(多次调用返回结果一致、不会修改外部状态)时,可以直接在default分支重复调用该函数:

switch (doSomething()) {
    case "1":
        return 1;
    case "2":
        return 2;
    default:
        console.log(doSomething()); 
}

注意:该方案不推荐通用场景使用,只要doSomething存在副作用(比如调用时会计数、依赖随机值/时间戳等),两次调用得到的结果就会不一致,导致逻辑错误。


内容的提问来源于stack exchange,提问作者Ron Zano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 07:36:03