Javascript 可以和或替换if()
我正在研究jQuery方法,看到它们以一些非常酷的方式使用Javascript 可以和或替换if(),javascript,Javascript,我正在研究jQuery方法,看到它们以一些非常酷的方式使用&&和|语句。我很高兴能实现这项技术,但我有一个关于用法的快速问题 您能否完全替换if(): 下面的代码是否等效 willWrap && !this.options.wrap && return active 否。&&需要表达式,并且返回活动的是完整语句,而不是表达式 > willWrap && !this.options.wrap && return active
&&
和|
语句。我很高兴能实现这项技术,但我有一个关于用法的快速问题
您能否完全替换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)代码>。如果返回激活状态只是激活状态怎么办?很抱歉,我在旅途中看到了这个问题,没有访问我的计算机进行测试。@Tylerreturn
有它的具体意思:如果省略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
}