如何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
}
Answers:
您不一定需要jQuery。仅JavaScript就能做到这一点。
var a = 2;
var b = 3;
var c = ((a < b) ? 'minor' : 'major');
该c
变量将是minor
如果该值true
,并且major
如果该值是false
。
这称为条件(三元)运算符。
https://developer.mozilla.org/zh-CN/docs/JavaScript/Reference/Operators/Conditional_Operator
if (a < b) c = 'major';
有一个三元运算符,如下所示:
var c = (a < b) ? "a is less than b" : "a is not less than b";
0 < 1 : 5 : 120;
是完全有效的语句。不过,除非您按行支付薪水,否则它会毫无用处。
if
在这种情况下,使用无聊的旧语句可能会使您的代码更易于阅读和理解,并且不太可能在以后的更改中被破坏。
您也可以仅使用逻辑运算符来近似if / else。
(a && b) || c
上面的内容与说的大致相同:
a ? b : c
当然,与以下内容大致相同:
if ( a ) { b } else { c }
我之所以这么说是因为这种方法有一个区别,即您必须知道的值b
将被评估为true,否则您将始终得到c
。基本上,您必须意识到要出现的部分if () { here }
现在已成为您所放置条件的一部分if ( here ) { }
。
由于JavaScript传递/返回形成逻辑表达式的原始值之一的行为,上述情况是可能的,而该值取决于运算符的类型。某些其他语言(例如PHP)会继续执行操作的实际结果,即true或false,这意味着结果始终为true或false。例如:
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语句相比,一个主要好处是前两种方法可以在参数的右侧进行操作,即作为赋值的一部分。
d = (a && b) || c;
d = a ? b : c;
if `a == true` then `d = b` else `d = c`
用标准if语句实现此目的的唯一方法是复制该分配:
if ( a ) { d = b } else { d = c }
您可能会问为什么在某些简单情况下您可能不会使用逻辑运算符而不是三元运算符,除非您想确定a
并且b
都正确。您还可以使用Logical运算符实现更简化的复杂条件,使用嵌套三元运算会变得很混乱……然后再次重申,如果您希望代码易于阅读,那么两者都不是那么直观。
用简单的英语,语法说明:
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;
condition ? true
true
false
并且""
应该都可以忽略else部分。
2 == 2 ? doSomething()
会是一样的if (2 == 2) doSomething()
吗?
: false
或: ""
应该在那里,如javascript预期的那样。