簡體   English   中英

如果在行內,此中斷為什么不起作用?

[英]Why doesn't this break work within inline if?

我想知道為什么使用內聯時如果有兩個動作(帶有break;是第二個), while循環在第一次運行時就break;了:

var list = [4, 2, 1, 3];

while (list.length) {
    list.splice(0, 1);
    console.log("length is now: " + list.length);

    if (list.length === 2) console.log("break!"); break;
}

將最后一行更改為這樣可以正常工作:

if (list.length === 2) break;

...這樣:

if (list.length === 2) {
    console.log("break!");
    break;
}

AFAIK可以在一個內聯中執行多個動作,例如:

if (true) console.log("true"); console.log("still true");

AFAIK可以在一個內聯中執行多個動作,例如:

不,不是。 為此,您需要一個塊( {...} ):

if (list.length === 2) {
    console.log("break!");
    break;
}

控制流語句(如if接受單個語句作為主體。 如果您需要使主體的多個語句變長,則該語句可能是一個障礙

無關緊要(除了樣式,可讀性和可維護性之外):

if (list.length === 2) { console.log("break!"); break; }

JavaScript解析器幾乎完全忽略了換行符(這幾乎是由於“自動分號插入”,如果希望解析器在應找到的換行符處找到了分號,則該解析器將在其中糾正缺少分號的代碼)。

如果沒有大括號,則內聯if語句將在第一個語句之后停止執行。

例:

if (list.length === 2) console.log("break!"); break;

這將使console.log作為唯一的語句運行,並且將無法到達另一個中斷。 聲明。

使用內聯if語句而沒有花括號幾乎從來不是一件好事

if (list.length === 2) {console.log("break!"); break;}

養成用大括號寫if語句的習慣。 你不會后悔的!

內聯if語句如果沒有大括號,則會產生一些不必要的行為,並且難以維護。 另外,閱讀並不有趣。 我們需要大括號。

希望這可以幫助!

暫無
暫無

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

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