2012-06-01 52 views
0

我刚刚被送到这一点,我不能确定这个变量声明的最后部分:这个声明的结尾部分是做什么的?

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

从我可以看到这是字符串“的loggedIn”但什么是执行模式匹配结尾? 'true' : 'false';部分呢?

我以前没这么见过这样的事情我不确定......

回答

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; 
+0

大,感谢。非常简洁的缩短“if”! – zik

+0

我完全同意这一点,但只是为了好玩而添加的:?:构造有时也被称为猫王操作符。看看角色,你会看到为什么:-) –

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; 
1

直列如果

condition_check ? result if true : result if false 
0

这就是所谓的三元if语句的分类器的方法。

如果您我的帐户元素有一类 '的loggedIn',变量u将被设置为TRUE 。否则它将被设置为FALSE。

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'; 
}