2012-06-30 37 views
11

MDN states:Sử dụng tiếp tục trong một do-while loop

Khi bạn sử dụng continue không có nhãn, nó chấm dứt lặp hiện tại của sâu thẳm nhất kèm theo while, do-while hoặc for tuyên bố và tiếp tục thực hiện các vòng lặp với tiếp theo lặp lại.

Tôi không chắc tại sao đoạn mã sau đây không hoạt động như tôi mong đợi.

do { 
    continue; 
} while(false); 

Mặc dù điều kiện whilefalse, tôi hy vọng nó sẽ chạy mãi mãi kể từ continue nhảy về phía đầu của khối, mà ngay lập tức thực hiện continue lần nữa, vv Bằng cách nào đó tuy nhiên, vòng lặp kết thúc sau một lần lặp. Có vẻ như continue bị bỏ qua.

Làm thế nào để continue trong công việc vòng lặp do-while?

+1

Điều kiện được đáp ứng được ngụ ý. Nếu điều kiện không được đáp ứng, không có lần lặp tiếp theo nào. –

+1

Tôi đã bỏ lỡ điều đó. Tôi đoán tôi đã bị lừa bởi thứ tự của mã nguồn. (Tôi nghĩ rằng 'tiếp tục' sẽ luôn luôn" nhảy lên "trong mã nguồn.) – pimvdb

+1

Nó * có * dường như theo cách đó, đặc biệt nếu bạn sử dụng một nhãn sao kê. 'TOP: làm {tiếp tục TOP; } trong khi (false) ' –

Trả lời

7

Check-out jsFiddle này: http://jsfiddle.net/YdpJ2/3/

var getFalse = function() { 
    alert("Called getFalse!"); 
    return false; 
}; 

do { 
    continue; 
    alert("Past the continue? That's impossible."); 
} while(getFalse());​ 

Nó dường như nhấn tiếp tục, sau đó thoát ra khỏi sự lặp lại đó để chạy các điều kiện kiểm tra. Vì điều kiện là sai, nó kết thúc.

2

Sau khi tiếp tục, vòng lặp có điều kiện được đánh giá, vì nó là sai, vòng lặp sẽ kết thúc.

4

Tiếp tục ngừng thực hiện phần còn lại của mã trong khối và chuyển trực tiếp đến lần lặp tiếp theo của vòng lặp của bạn.

Vì bạn đang làm while(false) không có phiên bản kế tiếp

6

continue không bỏ qua việc kiểm tra while(false) nhưng chỉ đơn giản là bỏ qua phần còn lại của các mã trong dấu ngoặc đơn.

4

continue không bắt đầu lại lần lặp hiện tại nhưng bỏ qua bước lặp lại tiếp theo (như đã nói trong báo giá MDN).

vì điều kiện false, không có lặp lại tiếp theo - vì vậy toàn bộ vòng lặp hoàn tất.

1

Tôi hy vọng nó sẽ chạy mãi mãi kể từ khi tiếp tục nhảy về phía đầu khối

Các continue không nhảy đến sự bắt đầu của khối, nó nhảy đến cuối của khối.

Các vấn đề liên quan