遇到的問題
- 最近在項目當中遇到了一個問題:某一行的代碼因爲長度過長,就加了一個換行,結果運行之後結果不一樣.後來出現問題後仔細排查終於確定了問題的原因.下面舉一個簡單的例子,以下面兩個代碼爲例:
return {
name:function ()
{
alert(1);
}
};
return
{
name:function ()
{
alert(1);
}
};
原因分析
- 如果簡單對比兩個代碼的話,確實一點毛病沒有,但是運行的時候可能就會有報錯的可能性.
- 查閱了部分資料後,知道js有一個自動修復機制——在程序可能有缺陷的時候,自動插入分號補全,但這個機制很不靠譜,常常會掩蓋一些錯誤。
- 這樣上面兩個代碼片在運行的時候就會展示出不一樣的內容,第二塊代碼塊在運行的時候return後面會自動補齊一個分號
return;
{
...
}
- 這樣就會報錯了~
小建議
我是在修改別人代碼的時候手欠,看見內容比較長,就手動換行了一下,結果導致了項目在運行的時候報錯.所以綜上所述,有幾個不成熟的小建議送給自己:
- 不要刻意更改別人的代碼,除非是項目需要或者在項目重構的時候
- 在不得已個更改別人代碼之後,一定一定要驗證是否正確,養成良好的習慣,避免在後期遇到問題的時候再排查,這樣浪費的時間遠遠多於當初驗證的時間!