javascript - 比较 if 语句的快捷方式

标签 javascript

<分区>

if (Progress.bar.status == 'finished' || Progress.bar.status == 'uploading'){
  //code here
}

我该如何缩短它?我想编写它而不必重复 Progress.bar.status 两次。

类似的东西:

Progress.bar.status == ('finished' or 'uploading').

最佳答案

我喜欢查找表:

if ({finished:1, uploading:1}[Progress.bar.status]){
  //code here
}

这使用一个对象来编写两个或更多选项的代码,甚至回避引用每个选择。它也非常快,因为对象可以被缓存并且没有比较逻辑或方法可以调用,只有快速的属性访问驱动流程......

请注意,在某些情况下,如果您绝对必须避免误报“hasOwnProperty"、"valueOf"、"toString"、"toLocaleString"、"constructor"和一些双下划线扩展。这通常不是问题,但需要牢记在心。如果您可以不用输入 if 这些关键字,或者从 Object.create() 构建一个缓存的选择集合,那么这是一种编写“上述之一”流程的快速而简单的方法。

关于javascript - 比较 if 语句的快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30974555/

相关文章:

javascript - Yii - 将 onclick 事件与 CLinkPager 与每个寻呼机链接绑定(bind)

javascript - 使用 javascript 将 <img title""> (或类似的)调用到 div 中以显示插图和描述?

javascript - jQuery 搜索表行(隐藏和可见)

javascript - Firefox 引导插件中的 CustomEvent 错误

javascript - 我如何理解 AngularJS 中的 "var vm = $scope.vm = {}"?

javascript - Backbone.js 与非 RE​​STful 应用程序? (Backbone.js 适合我当前的项目吗?)

javascript - 将 MobX 存储保存和加载到 React Native AsyncStorage 的最佳模式?

javascript - AJAX 和 PHP 的问题

javascript - AJAX 和 JavaScript

javascript - 使用 NodeJS 自触发永久运行 Firebase 进程