可以And和或替换if()

时间:2016-01-20 01:53:41

标签: javascript

我正在研究jQuery方法,并看到他们以一些非常酷的方式使用&&||语句。我很高兴能够实施这项技术,但对使用情况有一个快速的问题。

你能完全取代if():

if (willWrap && !this.options.wrap) return active

以下代码是否相同?

willWrap && !this.options.wrap && return active

2 个答案:

答案 0 :(得分:1)

没有。 &&需要表达式,return active是完整语句,而不是表达式。

> willWrap && !this.options.wrap && return active
Uncaught SyntaxError: Unexpected token return(…)

答案 1 :(得分:0)

returnMDN Docs始终用于特定任务,即:

  • return;中断执行将功能恢复为undefined
  • return myResult;返回值

如果你正在调用一个函数并期望它return 某些东西(一个字符串,数字,布尔值,另一个函数调用等......)
你可能不需要if语句(总是更具可读性),而是可以使用Conditional Operator ?:

// EXAMPLE 1: Return a/b value using Conditional Operator

function example1( statement ) {
  return statement ? "FOO" : "BAR" ;
  // return "FOO"(if condition is true), else return "BAR"
  // Or use undefined instead of "BAR" if you don't want to provide a return value
}

// EXAMPLE 2: Return a/b value using Array and Boolean-to-numeric conversion

function example2( statement ) {
  return ["FOO","BAR"][!+statement];
}

// EXAMPLE 3: Return value or undefined

function example3( statement ) {
  return ["FOO"][!+statement];
}

console.log( example1(true && true) );  // "FOO"
console.log( example1(true && false) ); // "BAR"

console.log( example2(true && true) );  // "FOO"
console.log( example2(true && false) ); // "BAR"

console.log( example3(true && true) );  // "FOO"
console.log( example3(true && false) ); // undefined

看起来不合逻辑,因为您没有将return包裹在if内,但在return

出现后无法添加更多代码
function example1( statement ) {
  return statement ? "FOO" : "BAR" ;
  // Cannot put more code here
}

VS

function example1( statement ) {
  if(statement) {
       return "FOO";
  }
  // More code here
}