if语句不使用大括号

时间:2014-11-11 02:59:54

标签: javascript if-statement

摘录代码:

    var x=0, direction=1;

    function fun_1() 
    {
        var dom_obj=document.getElementById("dir");
        x+=direction;
        if(x>=300 || x<=-300)
            direction=-direction;
            dom_obj.style.left=x;
            window.setTimeout("fun_1();",5);
    };

这很好用。但是,如果我在if statement中添加大括号,则不起作用。我究竟做错了什么?

Working,没有{}

Not working{}

非常感谢您的帮助。谢谢。

4 个答案:

答案 0 :(得分:1)

当你不使用花括号时,它喜欢写作:

if(x>=300 || x<=-300) {
    direction=-direction;
}
dom_obj.style.left=x;
window.setTimeout("fun_1();",5);

工作示例:http://plnkr.co/edit/42IwSmPJPionvo5cXVOI?p=preview

答案 1 :(得分:1)

Javascript与coffeescript不同,其中块由缩进确定,在控制语句中,如果没有{}块,则只有控制语句被认为是控制流的一部分后的第一个语句,所以你的代码没有{}(显式块定义)将与

相同
var x = 0,
    direction = 1;

function fun_1() {
    var dom_obj = document.getElementById("dir");
    x += direction;
    if (x >= 300 || x <= -300) {
        direction = -direction;
    }
    dom_obj.style.left = x;
    window.setTimeout("fun_1();", 5);
};

答案 2 :(得分:0)

代码意味着两种不同的东西,具体取决于你是否包含或排除花括号。

如果你使用花括号:

  1. 当if条件为真时,花括号内的所有语句都将执行
  2. 当if条件为false时,大括号内的所有语句都不会执行
  3. 如果你不使用花括号:

    1. 当if条件为真时,花括号内的所有语句都将执行
    2. 当if条件为false时,if语句后面只有一个语句不会执行。剩下的将执行。

答案 3 :(得分:0)

因为你把Brace放错了地方

它适用于大括号。

function fun_1() 
    {
        var dom_obj=document.getElementById("dir");
        x+=direction;
        if(x>=300 || x<=-300)
        {
            direction=-direction;
        }
        dom_obj.style.left=x;
        window.setTimeout("fun_1();",5);
    }

如果声明不关心缩进。没有括号,它只影响直接 声明,即出现在下一行中的一段代码。

所以在这种情况下,

if(x>=300 || x<=-300)
    direction=-direction;
    dom_obj.style.left=x;
    window.setTimeout("fun_1();",5);

direction=-direction;不受影响

dom_obj.style.left=x;
window.setTimeout("fun_1();",5);

当你支持它时,你包括

dom_obj.style.left=x;
window.setTimeout("fun_1();",5);

在您不使用大括号的情况下不包括。