【问题标题】:What is the execution order of if condition in JSJS中if条件的执行顺序是什么
【发布时间】:2018-03-05 15:27:08
【问题描述】:

给定:

if(arr[0]!=null && arr[0].value.toString()!="") {
    //do something
}

if 条件语句是否在第一个语句失败后立即返回 false?或者它是否检查第二个条件?

干杯, 加文 :)

【问题讨论】:

  • 布尔表达式为short-circuited
  • 已经有有用的答案了。但只是在将来提供帮助的评论 - 在 javascript 中编程时使用这种短路来仅在元素存在时才使用它是很常见的。示例{elem && <p>{elem}</p>}
  • 可能需要更多信息,arr[0] 的通常内容是什么?可以是空的,null,还是undefined?价值是什么?它是什么类型的? toString 和 gaetting 一个空字符串需要一个空字符串。为什么toString

标签: javascript if-statement arr


【解决方案1】:

这取决于。如果您使用 AND (&&) 检查值并且第一个值为 false,则条件将立即计算为 false,因为每个条件都必须计算为 true

如果您使用 OR (||) 检查值并且第一个条件是 false,则 if 语句将检查所有其他条件,直到找到 true 值。

【讨论】:

  • 因此,另一个避免“炸毁”的常见技巧是使用|| 来确保非空值。示例:var x = arr[0] || 1
  • 换句话说 - 评估从左侧开始,向右进行。 && 之后的任何内容仅在其左侧转换为 true 时才被评估。请注意何时使用括号,它可以以不太明显的方式将事物组合在一起。
【解决方案2】:

(arr[0]!=null && arr[0].value.toString()!="") 将在first 条件为假时直接返回假,因为您使用了&& - 而(arr[0]!=null || arr[0].value.toString()!="") 也会在第一个条件为假之后评估第二个条件。

【讨论】:

    【解决方案3】:

    它会立即返回,如果 arr[0] 为 null 则不会抛出错误。

    【讨论】:

    • “炸毁”?你什么意思?
    • 所以所有条件总是得到检查?
    • 不检查 arr[0].value 如果 arr[0] 为空,直接返回,所以跳过第二次检查。
    • @GavinCreagh 查找布尔短路
    【解决方案4】:

    是的。如果第一个条件失败,那么由于 JavaScript 中的 short circuit 功能,其余的检查将不起作用。

    【讨论】:

      猜你喜欢
      • 2014-07-17
      • 2013-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-08
      • 2011-01-28
      相关资源
      最近更新 更多