Hướng dẫn declare variable for loop javascript - khai báo biến cho javascript vòng lặp

Hoàn toàn không có sự khác biệt về ý nghĩa hoặc hiệu suất, trong JavaScript hoặc Actioncript.absolutely no difference in meaning or performance, in JavaScript or ActionScript.

for (initialization; condition; afterthought) statement 4 là một chỉ thị cho trình phân tích cú pháp, và không phải là một lệnh được thực thi vào thời gian chạy. Nếu một định danh cụ thể đã được khai báo for (initialization; condition; afterthought) statement 4 một lần hoặc nhiều nơi trong cơ thể hàm (*), thì tất cả việc sử dụng định danh đó trong khối sẽ được đề cập đến biến cục bộ. Không có gì khác biệt cho dù for (initialization; condition; afterthought) statement 6 được tuyên bố là for (initialization; condition; afterthought) statement 4 bên trong vòng lặp, bên ngoài vòng lặp hoặc cả hai.

Do đó, bạn nên viết bất cứ điều gì bạn thấy dễ đọc nhất. Tôi không đồng ý với Crockford rằng việc đặt tất cả các vars ở đầu một chức năng luôn là điều tốt nhất. Đối với trường hợp một biến được sử dụng tạm thời trong một phần của mã, tốt hơn là khai báo for (initialization; condition; afterthought) statement 4 trong phần đó, do đó phần chỉ đứng và có thể được sao chép. Mặt khác, sao chép một vài dòng mã vào một chức năng mới trong quá trình tái cấu trúc, mà không chọn riêng ra và di chuyển for (initialization; condition; afterthought) statement 4 liên quan và bạn đã có một toàn cầu tình cờ.

Đặc biệt:

for (var i; i<100; i++) do something; for (var i; i<100; i++) do something else;

Crockford sẽ khuyên bạn nên loại bỏ for (initialization; condition; afterthought) statement 4 thứ hai (hoặc xóa cả hai for (initialization; condition; afterthought) statement 4 và làm for (let i = 0; i < 9; i++) { console.log(i); // more statements } 2 ở trên) và JSLint sẽ đánh giá cao bạn vì điều này. Nhưng IMO có thể duy trì hơn khi giữ cả hai for (initialization; condition; afterthought) statement 4, giữ tất cả các mã liên quan lại với nhau, thay vì có một bit mã bổ sung, dễ bị xóa ở đầu hàm.

Cá nhân tôi có xu hướng khai báo là for (initialization; condition; afterthought) statement 4 Nhiệm vụ đầu tiên của một biến trong một phần mã độc lập, cho dù có cách sử dụng riêng của cùng một tên biến trong một phần khác của cùng một hàm. Đối với tôi, phải khai báo for (initialization; condition; afterthought) statement 4 là một JS mụn cóc không mong muốn (sẽ tốt hơn nếu có các biến mặc định vào cục bộ); Tôi không thấy đó là nhiệm vụ của tôi là nhân đôi những hạn chế của [một bản sửa đổi cũ của] Ansi C trong JavaScript.

(*: Khác với các cơ quan chức năng lồng nhau)

Câu lệnh FOR tạo ra một vòng lặp bao gồm ba biểu thức tùy chọn, được đặt trong ngoặc đơn và được phân tách bằng dấu chấm phẩy, theo sau là một câu lệnh (thường là một câu lệnh khối) để được thực thi trong vòng lặp.for statement creates a loop that consists of three optional expressions, enclosed in parentheses and separated by semicolons, followed by a statement (usually a block statement) to be executed in the loop.

Thử nó

Cú pháp

for (initialization; condition; afterthought) statement

for (let i = 0; i < 9; i++) { console.log(i); // more statements } 6 Tùy chọnOptional

Một biểu thức (bao gồm các biểu thức gán) hoặc khai báo biến được đánh giá một lần trước khi vòng lặp bắt đầu. Thường được sử dụng để khởi tạo một biến bộ đếm. Biểu thức này có thể tùy ý khai báo các biến mới với các từ khóa for (initialization; condition; afterthought) statement 4 hoặc for (let i = 0; i < 9; i++) { console.log(i); // more statements } 8. Các biến được khai báo với for (initialization; condition; afterthought) statement 4 không phải là cục bộ với vòng lặp, tức là chúng nằm trong cùng một phạm vi, vòng lặp for (let i = "start" in window ? window.start : 0; i < 9; i++) { console.log(i); } // SyntaxError: 'for-in' loop variable declaration may not have an initializer. 0 được phát hành. Các biến được khai báo với for (let i = 0; i < 9; i++) { console.log(i); // more statements } 8 là cục bộ của câu lệnh.

Kết quả của biểu thức này bị loại bỏ.

for (let i = "start" in window ? window.start : 0; i < 9; i++) { console.log(i); } // SyntaxError: 'for-in' loop variable declaration may not have an initializer. 2 Tùy chọnOptional

Một biểu thức được đánh giá trước mỗi lần lặp vòng lặp. Nếu biểu thức này đánh giá là đúng, for (let i = "start" in window ? window.start : 0; i < 9; i++) { console.log(i); } // SyntaxError: 'for-in' loop variable declaration may not have an initializer. 3 được thực thi. Nếu biểu thức đánh giá là sai, thực thi thoát khỏi vòng lặp và đi đến câu lệnh đầu tiên sau khi cấu trúc for (let i = "start" in window ? window.start : 0; i < 9; i++) { console.log(i); } // SyntaxError: 'for-in' loop variable declaration may not have an initializer. 0.

Bài kiểm tra có điều kiện này là tùy chọn. Nếu bị bỏ qua, điều kiện luôn đánh giá là đúng.

for (let i = "start" in window ? window.start : 0; i < 9; i++) { console.log(i); } // SyntaxError: 'for-in' loop variable declaration may not have an initializer. 5 Tùy chọnOptional

Một biểu thức được đánh giá ở cuối mỗi lần lặp lại vòng lặp. Điều này xảy ra trước khi đánh giá tiếp theo của for (let i = "start" in window ? window.start : 0; i < 9; i++) { console.log(i); } // SyntaxError: 'for-in' loop variable declaration may not have an initializer. 2. Thường được sử dụng để cập nhật hoặc tăng biến bộ đếm.

for (let i = "start" in window ? window.start : 0; i < 9; i++) { console.log(i); } // SyntaxError: 'for-in' loop variable declaration may not have an initializer. 3

Một tuyên bố được thực thi miễn là điều kiện đánh giá là đúng. Bạn có thể sử dụng câu lệnh BLOCK để thực thi nhiều câu lệnh. Để thực hiện không có câu lệnh trong vòng lặp, hãy sử dụng câu lệnh trống (for (let i = "start" in window ? window.start : 0; i < 9; i++) { console.log(i); } // SyntaxError: 'for-in' loop variable declaration may not have an initializer. 8).

Ví dụ

Sử dụng cho

Câu lệnh for (let i = "start" in window ? window.start : 0; i < 9; i++) { console.log(i); } // SyntaxError: 'for-in' loop variable declaration may not have an initializer. 0 sau đây bắt đầu bằng cách khai báo biến // Parenthesize the whole initializer for (let i = ("start" in window ? window.start : 0); i < 9; i++) { console.log(i); } // Parenthesize the `in` expression for (let i = ("start" in window) ? window.start : 0; i < 9; i++) { console.log(i); } 0 và khởi tạo nó thành // Parenthesize the whole initializer for (let i = ("start" in window ? window.start : 0); i < 9; i++) { console.log(i); } // Parenthesize the `in` expression for (let i = ("start" in window) ? window.start : 0; i < 9; i++) { console.log(i); } 1. Nó kiểm tra rằng // Parenthesize the whole initializer for (let i = ("start" in window ? window.start : 0); i < 9; i++) { console.log(i); } // Parenthesize the `in` expression for (let i = ("start" in window) ? window.start : 0; i < 9; i++) { console.log(i); } 0 ít hơn chín, thực hiện hai câu lệnh thành công và tăng // Parenthesize the whole initializer for (let i = ("start" in window ? window.start : 0); i < 9; i++) { console.log(i); } // Parenthesize the `in` expression for (let i = ("start" in window) ? window.start : 0; i < 9; i++) { console.log(i); } 0 thêm 1 sau mỗi lần đi qua vòng lặp.

for (let i = 0; i < 9; i++) { console.log(i); // more statements }

Cú pháp khối khởi tạo

Khối khởi tạo chấp nhận cả biểu thức và khai báo biến. Tuy nhiên, các biểu thức không thể sử dụng toán tử // Parenthesize the whole initializer for (let i = ("start" in window ? window.start : 0); i < 9; i++) { console.log(i); } // Parenthesize the `in` expression for (let i = ("start" in window) ? window.start : 0; i < 9; i++) { console.log(i); } 4 không được áp dụng, bởi vì điều đó không rõ ràng với vòng lặp // Parenthesize the whole initializer for (let i = ("start" in window ? window.start : 0); i < 9; i++) { console.log(i); } // Parenthesize the `in` expression for (let i = ("start" in window) ? window.start : 0; i < 9; i++) { console.log(i); } 5.

for (let i = "start" in window ? window.start : 0; i < 9; i++) { console.log(i); } // SyntaxError: 'for-in' loop variable declaration may not have an initializer.

// Parenthesize the whole initializer for (let i = ("start" in window ? window.start : 0); i < 9; i++) { console.log(i); } // Parenthesize the `in` expression for (let i = ("start" in window) ? window.start : 0; i < 9; i++) { console.log(i); }

Tùy chọn cho biểu thức

Tất cả ba biểu thức ở đầu vòng for (let i = "start" in window ? window.start : 0; i < 9; i++) { console.log(i); } // SyntaxError: 'for-in' loop variable declaration may not have an initializer. 0 đều là tùy chọn. Ví dụ: không bắt buộc phải sử dụng khối for (let i = 0; i < 9; i++) { console.log(i); // more statements } 6 để khởi tạo các biến:

let i = 0; for (; i < 9; i++) { console.log(i); // more statements }

Giống như khối for (let i = 0; i < 9; i++) { console.log(i); // more statements } 6, phần for (let i = "start" in window ? window.start : 0; i < 9; i++) { console.log(i); } // SyntaxError: 'for-in' loop variable declaration may not have an initializer. 2 cũng là tùy chọn. Nếu bạn đang bỏ qua biểu thức này, bạn phải đảm bảo phá vỡ vòng lặp trong cơ thể để không tạo ra một vòng lặp vô hạn.

for (let i = 0; ; i++) { console.log(i); if (i > 3) break; // more statements }

Bạn cũng có thể bỏ qua cả ba biểu thức. Một lần nữa, hãy đảm bảo sử dụng câu lệnh let i = 0; for (; i < 9; i++) { console.log(i); // more statements } 0 để kết thúc vòng lặp và cũng sửa đổi (tăng) một biến, để điều kiện cho câu lệnh break là đúng tại một số điểm.

let i = 0; for (;;) { if (i > 3) break; console.log(i); i++; }

Tuy nhiên, trong trường hợp bạn không sử dụng đầy đủ cả ba vị trí biểu thức - đặc biệt nếu bạn không khai báo các biến có biểu thức đầu tiên nhưng thay vào đó là đột biến một thứ gì đó trong phạm vi trên - thay vào đó hãy xem xét sử dụng vòng lặp let i = 0; for (; i < 9; i++) { console.log(i); // more statements } 1, điều này làm cho ý định rõ ràng hơn.

let i = 0; while (i <= 3) { console.log(i); i++; }

Khai báo từ vựng trong khối khởi tạo được đưa vào vòng lặp cho vòng lặp

Khai báo một biến trong khối khởi tạo có sự khác biệt quan trọng so với việc khai báo nó trong phạm vi trên, đặc biệt là khi tạo ra một đóng trong thân vòng lặp. Ví dụ: đối với mã bên dưới:

for (let i = 0; i < 3; i++) { setTimeout(() => { console.log(i); }, 1000); }

Nó đăng nhập // Parenthesize the whole initializer for (let i = ("start" in window ? window.start : 0); i < 9; i++) { console.log(i); } // Parenthesize the `in` expression for (let i = ("start" in window) ? window.start : 0; i < 9; i++) { console.log(i); } 1, let i = 0; for (; i < 9; i++) { console.log(i); // more statements } 3 và let i = 0; for (; i < 9; i++) { console.log(i); // more statements } 4, như mong đợi. Tuy nhiên, nếu biến được xác định trong phạm vi trên:

for (initialization; condition; afterthought) statement 0

Nó đăng nhập let i = 0; for (; i < 9; i++) { console.log(i); // more statements } 5, let i = 0; for (; i < 9; i++) { console.log(i); // more statements } 5 và let i = 0; for (; i < 9; i++) { console.log(i); // more statements } 5. Lý do là mỗi let i = 0; for (; i < 9; i++) { console.log(i); // more statements } 8 tạo ra một đóng cửa mới kết thúc biến // Parenthesize the whole initializer for (let i = ("start" in window ? window.start : 0); i < 9; i++) { console.log(i); } // Parenthesize the `in` expression for (let i = ("start" in window) ? window.start : 0; i < 9; i++) { console.log(i); } 0, nhưng nếu // Parenthesize the whole initializer for (let i = ("start" in window ? window.start : 0); i < 9; i++) { console.log(i); } // Parenthesize the `in` expression for (let i = ("start" in window) ? window.start : 0; i < 9; i++) { console.log(i); } 0 không được đưa vào thân vòng, tất cả các đóng cửa sẽ tham chiếu cùng một biến khi chúng được gọi là - và do tính chất không đồng bộ của let i = 0; for (; i < 9; i++) { console.log(i); // more statements } 8 , nó sẽ xảy ra sau khi vòng lặp đã thoát ra, khiến giá trị của // Parenthesize the whole initializer for (let i = ("start" in window ? window.start : 0); i < 9; i++) { console.log(i); } // Parenthesize the `in` expression for (let i = ("start" in window) ? window.start : 0; i < 9; i++) { console.log(i); } 0 trong tất cả các cơ thể của các cuộc gọi lại có giá trị là let i = 0; for (; i < 9; i++) { console.log(i); // more statements } 5.

Điều này cũng xảy ra nếu bạn sử dụng câu lệnh for (initialization; condition; afterthought) statement 4 làm khởi tạo, bởi vì các biến được khai báo với for (initialization; condition; afterthought) statement 4 chỉ được sử dụng chức năng, nhưng không phạm vi từ vựng (nghĩa là chúng không thể được phân tích vào thân vòng lặp).

for (initialization; condition; afterthought) statement 1

Hiệu ứng phạm vi của khối khởi tạo có thể được hiểu như thể tuyên bố xảy ra trong phần thân vòng, nhưng chỉ có thể truy cập được trong các phần for (let i = "start" in window ? window.start : 0; i < 9; i++) { console.log(i); } // SyntaxError: 'for-in' loop variable declaration may not have an initializer. 2 và for (let i = "start" in window ? window.start : 0; i < 9; i++) { console.log(i); } // SyntaxError: 'for-in' loop variable declaration may not have an initializer. 5.

Sử dụng cho không có tuyên bố

Chu kỳ for (let i = "start" in window ? window.start : 0; i < 9; i++) { console.log(i); } // SyntaxError: 'for-in' loop variable declaration may not have an initializer. 0 sau đây tính toán vị trí bù của một nút trong phần for (let i = "start" in window ? window.start : 0; i < 9; i++) { console.log(i); } // SyntaxError: 'for-in' loop variable declaration may not have an initializer. 5 và do đó nó không yêu cầu sử dụng phần for (let i = "start" in window ? window.start : 0; i < 9; i++) { console.log(i); } // SyntaxError: 'for-in' loop variable declaration may not have an initializer. 3, thay vào đó là dấu chấm phẩy.

for (initialization; condition; afterthought) statement 2

Lưu ý rằng dấu chấm phẩy sau tuyên bố for (let i = "start" in window ? window.start : 0; i < 9; i++) { console.log(i); } // SyntaxError: 'for-in' loop variable declaration may not have an initializer. 0 là bắt buộc, bởi vì nó là một tuyên bố trống. Mặt khác, câu lệnh for (let i = "start" in window ? window.start : 0; i < 9; i++) { console.log(i); } // SyntaxError: 'for-in' loop variable declaration may not have an initializer. 0 có được dòng let i = 0; for (;;) { if (i > 3) break; console.log(i); i++; } 3 sau đây làm phần for (let i = "start" in window ? window.start : 0; i < 9; i++) { console.log(i); } // SyntaxError: 'for-in' loop variable declaration may not have an initializer. 3 của nó, điều này làm cho let i = 0; for (;;) { if (i > 3) break; console.log(i); i++; } 5 thực thi nhiều lần.

Sử dụng cho hai biến lặp đi lặp lại

Bạn có thể tạo hai bộ đếm được cập nhật đồng thời trong một vòng lặp For bằng toán tử dấu phẩy. Nhiều khai báo for (let i = 0; i < 9; i++) { console.log(i); // more statements } 8 và for (initialization; condition; afterthought) statement 4 cũng có thể được nối với dấu phẩy.

for (initialization; condition; afterthought) statement 3

Thông số kỹ thuật

Sự chỉ rõ
Đặc tả ngôn ngữ Ecmascript # Sec-for-Statement
# sec-for-statement

Tính tương thích của trình duyệt web

Bảng BCD chỉ tải trong trình duyệt

Xem thêm

Bạn có thể khai báo các biến trong một JavaScript vòng lặp không?

Vì có sự linh hoạt trong bất kỳ ngôn ngữ lập trình nào để khai báo các biến và khi được yêu cầu, điều này sẽ dễ dàng cho người dùng đọc và hiểu phù hợp. Vì vậy, trong JavaScript quá, các biến có thể được khai báo bên trong hoặc bên ngoài vòng lặp theo người dùng dễ dàng ở bất cứ đâu trong cơ thể chức năng.the variables can be declared inside or outside the loop as per the users ease anywhere in the function body.

Bạn có thể khai báo các biến trong A For Loop không?

Thông thường biến điều khiển A For For Loop chỉ cần cho các mục đích của vòng lặp và không được sử dụng ở nơi khác.Khi đây là trường hợp, có thể khai báo biến bên trong phần khởi tạo của FOR.it is possible to declare the variable inside the initialization portion of the for.

Làm thế nào để bạn tuyên bố một vòng lặp?

Syntax..
Bước khởi đầu được thực hiện trước, và chỉ một lần.Bước này cho phép bạn khai báo và khởi tạo bất kỳ biến điều khiển vòng nào.....
Tiếp theo, điều kiện được đánh giá.....
Sau khi cơ thể của vòng lặp 'cho' thực thi, dòng điều khiển nhảy trở lại vào câu lệnh tăng.....
Điều kiện hiện được đánh giá lại ..

Làm thế nào để bạn sử dụng một biến bên ngoài một vòng lặp?

Giải pháp: Những gì bạn phải làm để sử dụng một biến bên ngoài một vòng lặp, là khai báo nó trước khi vòng lặp bắt đầu, bạn không phải khởi tạo biến trước đây, nhưng bạn phải khởi tạo nó trước khi bạn cố gắng sử dụng nó cho bất cứ điều gì.declare it before the loop begins, you don't have to initialize the variable before, but you have to initialize it before you try to use it for anything.

Chủ đề