[英]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.