Vòng lặp thứ hai là Unreachable code
vì đoạn mã bên dưới vòng lặp này sẽ không bao giờ đến được [false
luôn sai và bạn không bao giờ thay đổi nó]. Vậy là thừa
Xem Chương 14. 21.
Vì Java
biết rằng lập trình viên là con người. ] nó sẽ thông báo cho bạn về điều này để tránh nhầm lẫn
Lưu ý rằng while[false]
hoặc vòng lặp thứ hai bạn có khác với if[false]...
vì while[false]
[hoặc vòng lặp bạn có] không có ý nghĩa vì mã bên dưới nó sẽ không được thực thi. Không giống như if[false]
mà có thể có else
, vì vậy trình biên dịch không phàn nàn về điều đó trong trường hợp này
Về bản cập nhật OP
Trong trường hợp thứ ba, sẽ không có lỗi biên dịch vì giá trị false
đã được gán cho biến và trong trường hợp này, biến có thể được gán lại để có giá trị true
trong đó. Vì vậy trình biên dịch không phát sinh lỗi. Lưu ý rằng nếu biến được khai báo là true
2 thì trình biên dịch sẽ phát sinh lỗi vì biến này không bao giờ được gán giá trị mới, do đó mã bên dưới vòng lặp true
3 sẽ không thể truy cập được
Ngoại lệ JavaScript "khai báo trong phần đầu của vòng lặp for-of không thể có bộ khởi tạo" xảy ra khi phần đầu của vòng lặp for. of loop chứa một biểu thức khởi tạo chẳng hạn như for [const i = 0 of iterable]
. Điều này không được phép trong các vòng lặp for-of
SyntaxError: for-of loop variable declaration may not have an initializer. [V8-based] SyntaxError: a declaration in the head of a for-of loop can't have an initializer [Firefox] SyntaxError: Cannot assign to the loop variable inside a for-of loop header. [Safari]
SyntaxError
người đứng đầu của một cho. vòng lặp chứa một biểu thức khởi tạo. Nghĩa là, một biến được khai báo và gán giá trị for [const i = 0 of iterable]
. Điều này không được phép trong các vòng lặp for-of. Bạn có thể muốn một vòng lặp for
cho phép khởi tạo
const iterable = [10, 20, 30];
for [const value = 50 of iterable] {
console.log[value];
}
// SyntaxError: a declaration in the head of a for-of loop can't
// have an initializer
Bạn cần loại bỏ bộ khởi tạo [value = 50
] trong phần đầu của vòng lặp for-of
. Có thể bạn định đặt 50 làm giá trị offset, trong trường hợp đó bạn có thể thêm nó vào thân vòng lặp chẳng hạn
Ngoại lệ chỉ dành cho chế độ nghiêm ngặt của JavaScript "các khai báo đầu vòng lặp for-in có thể không có bộ khởi tạo" xảy ra khi phần đầu của một for. in chứa một biểu thức khởi tạo, chẳng hạn như for [var i = 0 in obj]
. Điều này không được phép trong các vòng lặp for-in ở chế độ nghiêm ngặt. Ngoài ra, các khai báo từ vựng với các bộ khởi tạo như for [const i = 0 in obj]
cũng không được phép ở bên ngoài chế độ nghiêm ngặt
SyntaxError: for-in loop variable declaration may not have an initializer. [V8-based] SyntaxError: for-in loop head declarations may not have initializers [Firefox] SyntaxError: a lexical declaration in the head of a for-in loop can't have an initializer [Firefox] SyntaxError: Cannot assign to the loop variable inside a for-in loop header. [Safari]
SyntaxError
người đứng đầu của một cho. trong vòng lặp chứa một biểu thức khởi tạo. Nghĩa là, một biến được khai báo và gán giá trị for [var i = 0 in obj]
. Ở chế độ không nghiêm ngặt, phần khai báo đầu này bị bỏ qua một cách âm thầm và hoạt động như for [var i in obj]
. Tuy nhiên, ở chế độ nghiêm ngặt, một SyntaxError
được ném. Ngoài ra, các khai báo từ vựng với các bộ khởi tạo như for [const i = 0 in obj]
cũng không được phép ở bên ngoài chế độ nghiêm ngặt và sẽ luôn tạo ra một ____23_______
Ví dụ này ném một SyntaxError
const obj = { a: 1, b: 2, c: 3 };
for [const i = 0 in obj] {
console.log[obj[i]];
}
// SyntaxError: for-in loop head declarations may not have initializers
Bạn có thể loại bỏ bộ khởi tạo [
const obj = { a: 1, b: 2, c: 3 };
for [const i = 0 in obj] {
console.log[obj[i]];
}
// SyntaxError: for-in loop head declarations may not have initializers
3] trong phần đầu của vòng lặp for-inconst obj = { a: 1, b: 2, c: 3 };
for [const i in obj] {
console.log[obj[i]];
}
cho. trong vòng lặp. Bạn có định sử dụng vòng lặp
const obj = { a: 1, b: 2, c: 3 };
for [const i = 0 in obj] {
console.log[obj[i]];
}
// SyntaxError: for-in loop head declarations may not have initializers
4 thay vì vòng lặp const obj = { a: 1, b: 2, c: 3 };
for [const i = 0 in obj] {
console.log[obj[i]];
}
// SyntaxError: for-in loop head declarations may not have initializers
5 để lặp lại một vòng lặp const obj = { a: 1, b: 2, c: 3 };
for [const i = 0 in obj] {
console.log[obj[i]];
}
// SyntaxError: for-in loop head declarations may not have initializers
6 không?