这份声明的最后部分是做什么的?

时间:2012-06-01 10:25:49

标签: javascript

我刚收到这封信,并且不确定此变量声明的最后部分:

var u = (document.getElementById('myaccount').className.match(/loggedin/)) ? 'true' : 'false';

从我所看到的,这是为字符串“loggedin”执行模式匹配,但结束? 'true' : 'false';部分的作用是什么?

我以前没见过这样的东西所以不确定......

5 个答案:

答案 0 :(得分:4)

这是三元运算符,它可以是这样的:

result = condition ? value_if_true : value_if_false;

这只是简写:

if(condition == true) {

    result = value_if_true;

} else {

    result = value_if_false;

}

condition部分可以是变量,函数或表达式,因此以下都是有效的:

result = myVariable ? value if true : value if false;

result = myFunction() ? value if true : value if false;

result = (myVariable > 10) ? value if true : value if false;

答案 1 :(得分:1)

内联如果

condition_check ? result if true : result if false

答案 2 :(得分:0)

它是一个三元if / else语句。

如果className.match(/ logged /)的计算结果为true,则返回true,否则返回false。

更优雅的写作方式

var u;
if(document.getElementById('myaccount').className.match(/loggedin/)) {
    u = true;
} else {
    u = false;
}
return u;

答案 3 :(得分:0)

它被称为三元if声明。

如果 myaccount 元素的类别为“ loggedin ”,则变量u将设置为 TRUE 。否则它将被设置为FALSE。

答案 4 :(得分:0)

这是另一种声明if语句的方法

<condition> ? <return if condition is true> : <return if condition is false>

与此相同

var u;
if (document.getElementById('myaccount').className.match(/loggedin/)){
   u = 'true'; 
} else {
   u = 'false';
}