Noob javascript 1行解释

时间:2014-01-04 15:33:26

标签: javascript

以下行是做什么的?

(flag)?flag=false:flag=true;

在这段代码中:

  var flag = true;
    function resize() {
        if(flag) {
            document.getElementById("centerimg").style.width = "150%";
            document.getElementById("centerimg").style.height = "150%";
            document.getElementById("center").style.left = 120+"px";
        } else {
            document.getElementById("centerimg").style.width = "100%";
            document.getElementById("centerimg").style.height = "100%";
            document.getElementById("center").style.left = 190.5+"px";
        }
        (flag)?flag=false:flag=true;
    } 

5 个答案:

答案 0 :(得分:4)

就像你写的那样:

if(flag){
    flag = false;
}else{
    flag = true;
}

答案 1 :(得分:1)

询问标志是否为true,如果flag为true,则将其更改为false,如果该标志为false,则将其更改为true。

答案 2 :(得分:1)

它正在使用所谓的三元运算符。它遵循与if-else语句相同的逻辑,只是一个更精简的版本。标准格式为condition ? true block : false block

(flag)正在检查布尔条件 - 在这种情况下,它会查看flag是否评估为true。在。。之间 ?和:是布尔条件为真时要执行的操作 - 在这种情况下将flag设置为false。如果条件为假,则会发生以下情况: - flag为真。

因此,如果我们写这个缩写,它最终会成为

if (flag) {
    flag = false;
} else {
    flag = true
}

可以进一步缩短为flag = !flagflag等于flag的反面)

答案 3 :(得分:0)

a?a = true:a = false是CONDITIONAL OPERATOR

用于根据条件将a的值设置为bc

在您的情况下,它与flag = !flag

的作用相同

答案 4 :(得分:0)

它使用JavaScript条件(或三元)运算符来翻转标志。这是if语句的快捷方式。见Conditional (ternary) Operator

如果flag为true,则将flag设置为false。否则,将flag设置为true。