問題描述: 函數的結構如上圖所示,在調用該函數的時候,瀏覽器報錯: 分析原因: 在 js 的語法中,如果語句獨占一行,通常可以省略句末的分號 但實際上 js 解析代碼的時候,只有在句末缺少分號就無法正常運行的時候,才會自動填補分號 如果前後的語句能夠組成一個語法正確的語句,則不會自動填補分號 上面的 ...
問題描述:
函數的結構如上圖所示,在調用該函數的時候,瀏覽器報錯:
分析原因:
在 js 的語法中,如果語句獨占一行,通常可以省略句末的分號
但實際上 js 解析代碼的時候,只有在句末缺少分號就無法正常運行的時候,才會自動填補分號
如果前後的語句能夠組成一個語法正確的語句,則不會自動填補分號
上面的函數中,js 實際處理的代碼為:
function test(a, b, c) { var x = a + b[a, b, c].forEach(function(e){ // ... }) }
通常來講,如果語句以 "("、"["、"/"、"+"、"-" 開始,該語句極有可能和前一條語句一起解析
但如果語句以 "++" 或者 "--" 開始的時候,會優先作為首碼操作符進行解析
如圖的語句會被解析為 x; ++y 而不是 x++; y
另外,如果語句以 return、continue、break 結束,js 會在換行處自動填補分號
解決方案:
在語句末尾手動添加分號