簡體   English   中英

if陳述不適用於大括號

[英]if-statement not working with curly brackets

摘錄代碼:

    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添加大括號, if statement它不起作用。 我究竟做錯了什么?

工作 ,沒有{}

無法使用{}

對你的幫助表示感謝。 謝謝。

當您不使用大括號時,它就像寫:

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

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

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

該代碼表示​​兩種不同的情況,具體取決於您是否包含花括號。

如果使用花括號:

  1. 如果if條件為true,則大括號內的所有語句將執行
  2. 如果if條件為false,則大括號內的所有語句都不會執行

如果不使用花括號:

  1. 如果if條件為true,則大括號內的所有語句將執行
  2. 如果if條件為false,則僅執行if語句之后的ONE語句。 其余的將執行。

因為您將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語句不關心縮進。 如果不使用大括號,它將僅影響立即執行的語句,即,出現在下一行的代碼段。

所以在這種情況下

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

不使用花括號的情況不包括在內。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM