&& (逻辑与)

  • 规则: && 运算符会从左到右依次求值,直到找到第一个 false 值。如果所有表达式都为 true,则返回最后一个表达式的值;如果某个表达式为 false,则直接返回该 false 值,并停止进一步的求值。

  • 应用

var n = 3 < arguments.length && void 0 !== arguments[3] && arguments[3];
  • 解释: 在这里,&& 用于连接多个条件。如果 3 < arguments.length 为 true,继续判断 void 0 !== arguments[3];如果也为 true,再判断 arguments[3] 的值,并将其赋值给 n。如果任何一个条件为 falsen 将会被赋值为该 false 值。

  • 总结: 只有在所有条件都为 true 的情况下,n 才会被赋值为 arguments[3] 的值;否则,n 会被赋值为第一个 false 条件的值。

|| (逻辑或)

  • 规则: || 运算符也从左到右依次求值,但它会返回第一个 true 的表达式值,并停止进一步的求值。如果所有表达式都为 false,则返回最后一个表达式的值。

  • 应用
    如果将 && 替换为 ||

    var n = 3 < arguments.length || void 0 !== arguments[3] || arguments[3];
  • 解释: 在这种情况下,n 将被赋值为第一个 true 条件的值。如果 3 < arguments.length 为 truen 将立即被赋值为 true,并停止进一步判断。如果 3 < arguments.length 为 false,则检查 void 0 !== arguments[3],依此类推。

  • 总结: 只要有一个条件为 truen 就会被赋值为第一个 true 条件的值;如果所有条件都为 falsen 将被赋值为最后一个条件的值。

Leave a reply

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> 

required