noob問題混淆語句塊
我經歷的ES6功能的網站,我發現這段代碼
function f (x, y, z) {
if (y === undefined)
y = 7;
if (z === undefined)
z = 42;
return x + y + z;
};
alert(f(1))
當我不及格y ans z參數爲函數,在第4行if (z === undefined)
爲真。我不明白的是,編譯器如何知道只有第5行是if塊的一部分而不是返回語句。
換句話說,編譯器如何知道以這種方式來執行它
if (z === undefined) {
z = 42;
}
return x + y + z;
,而不是在這樣
if (z === undefined) {
z = 42;
return x + y + z;
}
編譯器如何知道return語句不是第二個if語句的一部分?
如果聽起來不太合適,請給出一個合適的標題 –
沒有(括號)括號的if語句只會計算單個下一個表達式,計算和返回語句是2個表達式,因此只有計算與「if」鏈接。這就是爲什麼你應該總是使用大括號 –
如果沒有花括號的塊只考慮下一行是要執行的代碼塊。我很確定這是任何語言中的基本語法規則,它允許if body不被大括號包圍。含糊不清的原因也是爲什麼我討厭不用圍繞着大括號的身體。 – chiliNUT