問題描述:瀏覽器
函數的結構如上圖所示,在調用該函數的時候,瀏覽器報錯:函數
分析緣由:spa
在 js 的語法中,若是語句獨佔一行,一般能夠省略句末的分號3d
但實際上 js 解析代碼的時候,只有在句末缺乏分號就沒法正常運行的時候,纔會自動填補分號code
若是先後的語句可以組成一個語法正確的語句,則不會自動填補分號blog
上面的函數中,js 實際處理的代碼爲:io
function test(a, b, c) { var x = a + b[a, b, c].forEach(function(e){ // ... }) }
一般來說,若是語句以 "("、"["、"/"、"+"、"-" 開始,該語句極有可能和前一條語句一塊兒解析function
但若是語句以 "++" 或者 "--" 開始的時候,會優先做爲前綴操做符進行解析class
如圖的語句會被解析爲 x; ++y 而不是 x++; ytest
另外,若是語句以 return、continue、break 結束,js 會在換行處自動填補分號
解決方案:
在語句末尾手動添加分號