Javascript 可以和或替换if()

Javascript 可以和或替换if(),javascript,Javascript,我正在研究jQuery方法,看到它们以一些非常酷的方式使用&&和|语句。我很高兴能实现这项技术,但我有一个关于用法的快速问题 您能否完全替换if(): 下面的代码是否等效 willWrap && !this.options.wrap && return active 否。&&需要表达式,并且返回活动的是完整语句,而不是表达式 > willWrap && !this.options.wrap && return active

我正在研究jQuery方法,看到它们以一些非常酷的方式使用
&&
|
语句。我很高兴能实现这项技术,但我有一个关于用法的快速问题

您能否完全替换if():

下面的代码是否等效

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

否。
&&
需要表达式,并且
返回活动的
是完整语句,而不是表达式

> willWrap && !this.options.wrap && return active
Uncaught SyntaxError: Unexpected token return(…)
始终用于特定任务,即:

  • 返回中断执行将函数返回为
    未定义
  • 返回myResult返回一个值
如果您正在调用一个函数,并希望它
返回
某些内容(字符串、数字、布尔值、另一个函数调用等)
因此,您可能不需要
if
语句(它总是更可读),而是可以使用:

看起来似乎不符合逻辑,因为您没有将
返回
包装在
if
中,因此在出现
返回
后无法添加更多代码

function example1( statement ) {
  return statement ? "FOO" : "BAR" ;
  // Cannot put more code here
}
vs:


不,它们不是导致
&&return
不正确的等价原因。请尝试一下-第二个是语法错误。重新打开是因为虽然解决了
&
问题,但它没有解决使用
return
的问题,这是这个问题的一个重要部分。如果您对自我混淆代码感兴趣,只要看看uglify或其他一些小型游戏机的输出,你就会发现很多可以模仿的例子。例如,您可以编写
returnwillwrap&&!这个.选项.包装?活动:(foobar(),!1)。如果返回激活状态只是激活状态怎么办?很抱歉,我在旅途中看到了这个问题,没有访问我的计算机进行测试。@Tyler
return
有它的具体意思:如果省略
return
语句,那么你的函数就没有什么要返回的了,而是执行了一些东西,但这改变了函数的操作方式。噢,糟了。在我的具体示例中,它以一个值结束它所属的函数。谢谢
// 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
function example1( statement ) {
  return statement ? "FOO" : "BAR" ;
  // Cannot put more code here
}
function example1( statement ) {
  if(statement) {
       return "FOO";
  }
  // More code here
}