Nó không hỗ trợ câu lệnh
for..of
JavaScript.Đăng nhập
Bạn chưa có tài khoản? Đăng ký.
Bạn đã quên password?
for..of
.Symbol.iterator
.Chúng ta có thể sử dụng vòng lặp for..of
để lặp lại các phần tử của một chuỗi.
Chúng ta có thể sử dụng vòng lặp for..of
để lặp lại các phần tử của Mảng.
Ví dụ
const cars = ["Kia","Innova","CRV","BMW"]; var y = ""; for (var i of cars) { y += i + "<br/>"; }
Giao thức trình lặp xác định cách tạo ra một chuỗi giá trị từ một đối tượng.
Một đối tượng trở thành một trình lặp khi nó thực hiện một phương thức next()
.
Phương thức next()
sẽ trả về một đối tượng có hai thuộc tính:
value | Giá trị được trả về bởi trình lặp (Có thể bỏ qua nếu done là true) |
---|---|
done | true Nếu trình lặp đã hoàn thành false Nếu trình lặp đã tạo ra một giá trị mới |
Hàm lặp này sẽ trả về kết quả không bao giờ kết thúc: 10, 20, 30, 40, ... mỗi khi hàm next()
được gọi.
Ví dụ
// Định nghĩa hàm lặp function myNumbers(){ var n = 0; return { next: function(){ n += 10; return {value:n,done:false}; } } } var n = myNumbers(); n.next(); // 10 n.next(); // 20 n.next(); // 30 document.getElementById('demo').innerHTML = n.next().value;
for..of
JavaScript.JavaScript có thể lặp lại là một đối tượng có Symbol.iterator
.
Hàm Symbol.iterator
là một hàm trả về một hàm next()
.
Ví dụ
// Tạo đối tượng myNumbers = {}; // Làm cho nó có thể lặp myNumbers[Symbol.iterator] = function() { var n = 0; done = false; return { next() { n += 10; if (n == 100) {done = true} return {value:n, done:done}; } }; } var text = ""; for (const num of myNumbers) { text += num + "<br>"; }
Phương thức Symbol.iterator
được gọi tự động bởi for..of
.
Nhưng chúng ta cũng có thể làm "thủ công".
Ví dụ
while (true) { const result = iterator.next(); if (result.done) break; text += result.value + "<br>"; }