Trong cuốn sách Javascript: The Good Parts bởi Douglas Crockford, đây là tất cả các tác giả đã nói về Tuyên bố tiếp tục:Tại sao các câu lệnh "tiếp tục" bị lỗi trong JavaScript?
Tuyên bố
continue
nhảy đến phía trên cùng của vòng lặp. Tôi chưa bao giờ thấy một đoạn mã không được cải thiện bằng cách tái cấu trúc mã để xóa câu lệnhcontinue
.
Điều này thực sự gây nhầm lẫn cho tôi. Tôi biết Crockford có một số quan điểm rất có ý kiến về JavaScript, nhưng điều này nghe có vẻ hoàn toàn sai với tôi.
Trước hết, continue
không chỉ nhảy lên đầu vòng lặp. Theo mặc định, nó cũng tiến tới lần lặp tiếp theo. Vì vậy, không phải là tuyên bố của Crockford chỉ là thông tin hoàn toàn sai?
Quan trọng hơn, tôi không hoàn toàn hiểu tại sao continue
thậm chí còn được coi là xấu. Bài đăng này cung cấp những gì có vẻ là giả định chung: Why is continue inside a loop a bad idea?
Mặc dù tôi hiểu làm thế nào để đọc được một số trường hợp nhất định, tôi nghĩ nó có khả năng làm cho mã dễ đọc hơn. Ví dụ:
var someArray=['blah',5,'stuff',7];
for(var i=0;i<someArray.length;i++){
if(typeof someArray[i]==='number'){
for(var j=0;j<someArray[i];j++){
console.log(j);
}
}
}
Điều này có thể được refactored thành:
var someArray=['blah',5,'stuff',7];
for(var i=0;i<someArray.length;i++){
if(typeof someArray[i]!=='number'){
continue;
}
for(var j=0;j<someArray[i];j++){
console.log(j);
}
}
continue
không phải là đặc biệt có lợi trong ví dụ cụ thể này, nhưng nó chứng tỏ một thực tế rằng nó làm giảm độ sâu làm tổ. Trong mã phức tạp hơn, điều này có khả năng có thể tăng khả năng đọc.
Crockford không giải thích lý do tại sao continue
không nên được sử dụng, vì vậy có ý nghĩa sâu sắc hơn đằng sau ý kiến này mà tôi đang thiếu không?
Từ khóa 'tiếp tục' là công cụ - hãy sử dụng công cụ này nếu có. SOmetimes nó là cần thiết, hầu hết thời gian nó không phải là. Thời gian duy nhất nó xấu là khi bạn không cần phải sử dụng nó nhưng đã quá lười biếng hoặc cẩu thả để làm điều đó một cách khác. – slugster
Tôi có cảm giác tương tự và đó là lý do tại sao tôi thực hiện [post] của mình (http://stackoverflow.com/questions/30030033/continue-statement-confusion). Điều đã giúp tôi chỉ nghĩ về từ 'hop' khi sử dụng câu lệnh tiếp tục. Tôi nghĩ rằng ông Crawford đã sử dụng một từ ngữ nghèo nàn của sự lựa chọn ở đây khi thiết kế ngôn ngữ: P Đặc biệt là kể từ khi hop có thể áp dụng logic 'tiếp tục' phía sau nó. Nếu bạn nhảy qua một cái gì đó bạn thường xuyên tiếp tục. Hãy nghĩ về vận động viên chạy marathon như một sự tương tự tốt. –
"Ông Crawford" không thiết kế ngôn ngữ. – rlemon