這兩天在做一個表單登錄頁面的驗證時,使用each遍歷input判斷其是否為空值,若是空值則彈出提示,並使用return fasle結束當前所調用函數。如圖:


但結果並不是預期那樣,它只是終止each循環,仍繼續執行each之后的語句,並未結束函數。此時找不出問題,就換了for循環,如圖:


達到了預期效果,在滿足條件之后使用return fasle,不僅終止了for循環,也結束當前函數。
尋找一番原因后,這是在網上查閱到的答案:
1、$.each實際上也是jquery的自定義函數, 在循環體內return false表示跳出each函數, return true表示跳出這一次循環, 繼續執行下一次循環. 所以要是想跳出整個函數, 只有用變量控制或者使用for循環。
2、jquery是對象鏈~所以$(..).each()返回的還是對象集合~each(function(){})~只是回調函數而已~所以在回調函數里不能返回結果到each外面~
最后,所以判斷return false是否會終止某個函數,需要看return false所處的位置。
