我如何使用内联if
在JavaScript语句? 是否有一个内嵌else
说法吗?
事情是这样的:
var a = 2;
var b = 3;
if(a < b) {
// do something
}
我如何使用内联if
在JavaScript语句? 是否有一个内嵌else
说法吗?
事情是这样的:
var a = 2;
var b = 3;
if(a < b) {
// do something
}
你并不一定需要jQuery的。 单独的JavaScript会做到这一点。
var a = 2;
var b = 3;
var c = ((a < b) ? 'minor' : 'major');
该c
变量将是minor
,如果值是true
,且major
如果值是false
。
这被称为一个条件(三元)算子。
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Conditional_Operator
有一个三元运算符,就像这样:
var c = (a < b) ? "a is less than b" : "a is not less than b";
对于写作if
语句内联,它里面的代码应该只有一个语句:
if ( a < b ) // code to be executed without curly braces;
您也可以近似一个if / else语句只使用逻辑运算符。
(a && b) || c
以上是大致相同的话:
a ? b : c
当然还有,大致相同:
if ( a ) { b } else { c }
我说大概因为这种方法中,你必须知道的价值的一个区别b
将评估为true,否则你总是会得到c
。 Bascially你必须认识到,部分将出现if () { here }
现在您将条件的一部分, if ( here ) { }
以上是可能的,因为传递/返回,所形成的逻辑表达式,哪一个取决于操作者的类型的原始值中的一个的Java脚本的行为。 某些其他语言,如PHP,进行操作,即真或假的实际结果,这意味着结果始终是真的还是假的; 例如:
14 && 0 /// results as 0, not false
14 || 0 /// results as 14, not true
1 && 2 && 3 && 4 /// results as 4, not true
true && '' /// results as ''
{} || '0' /// results as {}
其中一个主要的好处,与正常的if语句,相比前两个方法可以在IE浏览器作为任务的一部分参数的右手边操作。
d = (a && b) || c;
d = a ? b : c;
if `a == true` then `d = b` else `d = c`
唯一的办法与标准,以实现这个if语句将复制分配新建分配FY:
if ( a ) { d = b } else { d = c }
你可能会问,为什么只使用逻辑运算符 ,而不是三元运算符 ,对于简单的情况下,你可能不会,除非你想确保a
和b
都是真实的。 您也可以实现与逻辑运算符,如果你希望你的代码易于阅读,也不是真的那么intuative可以得到相当混乱使用嵌套三元操作...然后再更简化复杂的条件。
用简单的英语,语法解释:
if(condition){
do_something_if_condition_is_met;
}
else{
do_something_else_if_condition_is_not_met;
}
可以写成:
condition ? do_something_if_condition_is_met : do_something_else_if_condition_is_not_met;
<div id="ABLAHALAHOO">8008</div>
<div id="WABOOLAWADO">1110</div>
parseInt( $( '#ABLAHALAHOO' ).text()) > parseInt( $( '#WABOOLAWADO ).text()) ? alert( 'Eat potato' ) : alert( 'You starve' );
你可以做这样的在JavaScript:
a < b ? passed() : failed();
如果你只是想要一个内嵌IF(没有ELSE),您可以使用逻辑运算符:
(a < b) && /*your code*/;
如果你需要一个ELSE同样,使用三元操作,其他人建议。
我经常需要通过使用运行每种条件更多的代码,: ( , , )
的多个代码元素可以执行:
var a = 2;
var b = 3;
var c = 0;
( a < b ? ( alert('hi'), a=3, b=2, c=a*b ) : ( alert('by'), a=4, b=10, c=a/b ) );
仅供参考,您可以撰写有条件的经营者
var a = (truthy) ? 1 : (falsy) ? 2 : 3;
如果你的逻辑是足够复杂,那么你可以考虑使用IIFE
var a = (function () {
if (truthy) return 1;
else if (falsy) return 2;
return 3;
})();
当然,如果你打算使用这个逻辑不止一次,那么你有啥可将其封装在一个功能,以保持整洁,干燥。
要添加到这一点,如果条件你也可以在线使用&&和|| 运营商。 像这样
var a = 2;
var b = 0;
var c = (a > b || b == 0)? "do something" : "do something else";
是不是这个问题基本上是:我可以写出下面?
if (foo)
console.log(bar)
else
console.log(foo + bar)
答案是肯定的,上面会翻译。
然而,要警惕做以下的
if (foo)
if (bar)
console.log(foo)
else
console.log(bar)
else
console.log(foobar)
一定要包裹暧昧码在大括号如上述将抛出异常(和类似的置换将产生不希望的行为)。