Javascript:如何简化具有多个 OR 条件的 if 语句?

2024-05-02

很抱歉,如果我在写这篇文章时犯了错误。我是新来的,不知道这是如何工作的,希望我能尽快学会。我也是 JavaScript 新手。

所以问题是:我有这个代码.elements.js文件,我无法让它工作。

放这个有用吗?

if (codePrompt == (codeSwitch || codeSwitchBG || codeBlur || codeShowInfo)){};

还是我必须通过正常方式做到这一点?

if (codePrompt == codeSwitch || codePrompt == codeSwitchBG || codePrompt == codeBlur || codePrompt == codeShowInfo){};


var codeSwitch = 'switch()';
var codeSwitchBG = 'switch(background)';
var codeBlur = 'blur()';
var codeShowInfo = 'showInfo()';

$(".code").on("click", function () {
var codePrompt = prompt("Set the code in the command line.");
if (codePrompt == (codeSwitch || codeSwitchBG || codeBlur || codeShowInfo)) {
    if (codePrompt == codeSwitch) {
        alert("Switching background...");
        console.log("Used '" + codeSwitch + "' command.");
    } else if(codePrompt == codeBlur) {
        alert("Blurring elements...");
        console.log("Used '" + codeBlur + "' command.");
    } else if(codePrompt == codeSwitchBG) {
        alert("Switching background...");
        console.log("Used '"+ codeSwitchBG + "' command.");
    }else if(codePrompt == codeShowInfo) {
        alert("Showing info...");
        console.log("Used '"+ codeShowInfo + "' command.");
    }
} else {
    alert("Wrong command, try again.");
    console.log("Wrong command, try again.");
};
});

“正常”方式按照您可能期望的方式工作。

然而,无论如何,if 语句是多余的。你可以跳过它:

if (codePrompt === codeSwitch) {
    alert("Switching background...");
    console.log("Used '" + codeSwitch + "' command.");
} else if (codePrompt === codeBlur) {
    alert("Blurring elements...");
    console.log("Used '" + codeBlur + "' command.");
} else if (codePrompt === codeSwitchBG) {
    alert("Switching background...");
    console.log("Used '" + codeSwitchBG + "' command.");
} else if (codePrompt === codeShowInfo) {
    alert("Showing info...");
    console.log("Used '" + codeShowInfo + "' command.");
} else {
    alert("Wrong command, try again.");
    console.log("Wrong command, try again.");
}

这是一个很好的用例switch,我会这样重构它:

var alertMessage = "",
    consoleMessage = "Used '" + codePrompt + "' command.";
switch (codePrompt) {
    case codeSwitch:
        alertMessage = "Switching background...";
        break;
    case codeBlur:
        alertMessage = "Blurring elements...";
        break;
    case codeSwitchBG:
        alertMessage = "Switching background...";
        break;
    case codeShowInfo:
        alertMessage = "Showing info...";
        break;
    default:
        alertMessage = consoleMessage = "Wrong command, try again.";
        break;
}
alert(alertMessage);
console.log(consoleMessage);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript:如何简化具有多个 OR 条件的 if 语句? 的相关文章

随机推荐

  • Eclipse 上的 Android 开发:始终打开新的模拟器

    这应该是一个非常简单的问题 我正在做 Hello Android 教程 我能够将我的应用程序安装到模拟器中 然而 当我再次运行 没有任何更改 时 Eclipse 环境坚持启动一个新的模拟器 而不是连接到现有的模拟器 我该如何解决这个问题 我
  • Java Swing - 在运行时动态切换语言环境

    我了解如何国际化 java 程序 但我有一个问题 我的程序中的语言可以随时切换 但我的程序可以存在多种状态 这意味着它可能会也可能不会打开多个 JLabels JPanel JFrame 等 是否有一个类或方法可以将当前的 GUI 更新为切
  • 在用户提交的正则表达式中查找捕获组

    我有一个 python 应用程序 需要处理用户提交的正则表达式 出于性能考虑 我想禁止捕获组和反向引用 我的想法是使用另一个正则表达式来验证用户提交的正则表达式不包含任何命名或未命名的组捕获 如下所示 def validate user r
  • 使用 php 和 jquery 的简单彗星示例

    谁能给我一个使用 PHP 的彗星技术的简单好例子 我只需要一个使用持久 HTTP 连接或类似连接的示例 我不想使用轮询技术 因为我已经设置了类似的东西 并且不仅难以使用和管理它的大量资源 另外我使用的是 IIS7 而不是 Apache 一个
  • Windows Phone 8.1 中的 RadialGradientBrush?

    请告诉我如何在 Windows Phone 8 1 应用程序中创建 RadialGradientBrush 我试图在这里找到它 但没有这样的刷子 Windows UI Xaml Media 有任何想法吗 谢谢你 如果您不介意从 NuGet
  • 意外的解构行为,在更深层次解构时必须声明一个键两次[重复]

    这个问题在这里已经有答案了 我在 ES6 中进行一些解构 遇到了意想不到的情况 这是所发生事件的一个简单版本 let obj x y 5 let x y obj console log x x is not defined console
  • JSF 2.0 隐式导航,不同的观点

    我正在寻找对 JSF 2 0 隐式导航及其如何与视图一起工作的良好解释 更准确地说 我知道从操作方法中我可以返回一个字符串 它是操作的结果 如果存在文件名与结果匹配的 JSF 视图 那么这就是隐式导航 现在 我的问题是 如果从文件夹内的视图
  • ios 中的位置时间戳精度

    在分析 iOS 10 中的位置服务后 发现缓存行为存在一些不一致 定期 在我的例子中每 20 秒 获取位置会返回位置 但它们的时间戳不按时间顺序排列 这表明缓存位置可能有问题 因此 如果您通过位置时间戳检查准确性 最好也保存以前的时间戳 这
  • 使用 CSS 过渡动画 max-height

    我想创建一个仅由类名驱动的展开 折叠动画 javascript 用于切换类名 我正在上一堂课max height 4em overflow hidden 和另一个max height 255em 我也尝试过这个值none 根本没有动画 这个
  • 使用 Caliburn.Micro 将绑定选择更改为 ViewModel

    我们在一个新的 Silverlight 项目中使用了 Caliburn Micro 一切都运行良好 内置约定将按钮单击事件绑定到 viewModel 但我不确定处理数据网格和组合框上的 SelectionChanged 事件的最佳方法是什么
  • 如何停止supervisord.conf文件中指定的单个程序? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想使用supervisor来管理几个进程 我已经在supervisord conf文件中进行了更改 我想稍后停止一些程序 我尝试使用 s
  • 如何在 C# 2.0 中重写 lambda 表达式?

    MatchEvaluator evaluator match gt var splitPos match Value IndexOf var newValue match Value Substring 0 splitPos 2 Retri
  • 实体框架迁移 - 启用自动迁移以及添加的迁移

    我在我的项目中使用实体框架 4 3 迁移 我想使用自动迁移 以便当我对域对象和上下文类进行修改时 我的数据库会在运行项目时自动更新 到目前为止我已经完成了这个工作 除了自动迁移之外 我还想使用一些添加的迁移 并且我希望应用程序在运行应用程序
  • ffmpeg 用于屏幕捕获?

    所以我有一个小程序来捕获屏幕和计算机麦克风的声音 然后屏幕截图被编码为 ScreenVideo2 声音被编码为 AAC 如何使用 ffmpeg 逐帧混合 然后将混合输出发送到 wowza 媒体服务器 如果用ffmpeg无法完成 您能提供一些
  • System.DirectoryServices.Interop.UnsafeNativeMethods.IAds.GetInfo() 处的 FileNotFoundException

    我有这行简单的代码 var entry new DirectoryEntry WinNT DOMAIN MachineName Computer Console WriteLine entry Guid 实际上 路径是由命令行提供的 这个简
  • 罐子不匹配!修复使用 appcompat_v7 和 Facebook sdk 时的依赖关系。

    我在我的项目中使用 appcompat v7 库和 facebook sdk 并且这两个库都有 android support v4 jar 如果我删除任何 jar 则相应的库将无法工作 并且不允许同时拥有这两个 jar 我应该怎么办 请帮
  • 从 UIButton 调用类外部的函数

    我有一个函数 我想在按下按钮时调用它 但与我迄今为止所做的任何事情不同 我希望能够从多个 ViewController 中的任何一个访问它 我不想在每个 ViewController 中重复相同的代码块 我尝试在 ViewControlle
  • 使用简单的 UPDATE 查询“不支持 DML 操作”

    我收到错误Not supported for DML operations当我使用以下 HQL 时 Query UPDATE WorkstationEntity w SET w lastActivity timestamp WHERE w
  • Hilt:为什么是 ActivityRetainedScoped 与 ViewModelScoped

    我试图理解为什么ActivityRetainedScoped为希尔特的 DI 引入 在我看来 范围与ViewModelScoped应该做 我的印象是作用域是这样工作的 AppScope singleton gt ViewModelScope
  • Javascript:如何简化具有多个 OR 条件的 if 语句?

    很抱歉 如果我在写这篇文章时犯了错误 我是新来的 不知道这是如何工作的 希望我能尽快学会 我也是 JavaScript 新手 所以问题是 我有这个代码 elements js文件 我无法让它工作 放这个有用吗 if codePrompt c