Một trong những người bạn của tôi đang dạy một lớp lập trình với Javascript và một trong những bài tập của anh ấy là tạo ra một trò chơi đoán số. Đây là ví dụ về việc triển khai ví dụ:Từ khóa ngắt trong Javascript chỉ có nghĩa là vi phạm các vòng lặp?
funProgram: for(;;) {
numberGuesser: {
var num = (Math.random() * 100) | 0;
var guess = +prompt("I'm thinking of a number between 0 and 100. Try to guess it.", 0);
var guesses = 1;
guess: for(;;) {
higher: {
lower: {
if(guess === num) break guess;
if(guess > num) break lower;
guess = +prompt("Too low. Try again.", 0);
break higher;
}
guess = +prompt("Too high. Try again.", 0);
}
guesses++;
}
alert("You got it in " + guesses + " guesses! The number is " + num);
}
var again = prompt("Do you want to guess again (y/n)?", "y") === "y";
if(!again) break funProgram;
}
Ông ấy nói với tôi rằng thực tiễn tốt là gắn nhãn mã của bạn và bao quanh dễ dàng. Anh ta cũng nói rằng những sự phá vỡ được ghi nhãn và tiếp tục dễ đọc hơn nhiều so với những người không dán nhãn bởi vì bạn có thể biết chính xác những gì bạn đang phá vỡ. Tôi chưa bao giờ thấy bất kỳ mẫu mã như thế này, vì vậy tôi không chắc chắn nếu điều này là đúng sự thật.
Tôi đã sử dụng Javascript một thời gian và có một vài điều ở đây mà tôi chưa bao giờ thấy trước đây và một số điều mà tôi vẫn chưa hiểu. Tôi nghĩ rằng từ khóa break
đặc biệt có nghĩa là để thoát ra khỏi vòng lặp. Các khối higher
và lower
không phải là vòng lặp, nhưng dường như bạn vẫn có thể thoát ra khỏi nó. Làm thế nào là có thể? Nó có vẻ kỳ lạ với tôi để thoát ra khỏi cái gì đó không lặp lại. Bạn cũng có thể thoát ra khỏi các chức năng bằng cách sử dụng từ khóa break
không?
+1. Tôi sẽ là người ở hàng rào đối diện ... "Anh ta". Tôi muốn nói ghi nhãn tất cả các ngắt "chuẩn" sẽ làm cho mã * ít * dễ đọc hơn, vì thiếu "sử dụng hàng ngày" của nhãn làm cho nó nổi bật là "điều này khác với tiêu chuẩn' break' ", có nghĩa là tôi ' sẽ dành thời gian để đảm bảo rằng 'ngắt' này, thực sự, hoạt động chính xác như nó sẽ không có nhãn. – JimmiTh