Hướng dẫn javascript let scope if statement - javascript let phạm vi câu lệnh if
Rất nhiều lần tôi cần phải phân loại một biến chỉ cho một tuyên bố nếu một sự thật. Ví dụ: Show
Tôi đã thử các kết hợp tương tự như 1 như thế này:
Nhưng nó không hoạt động. Nếu tôi sử dụng 2 thay vì 3, nó hoạt động nhưng biến mà nó đã nâng để nó không giới hạn ở khối câu lệnh IF.
user7393973 2.1801 Huy hiệu vàng17 Huy hiệu bạc54 Huy hiệu đồng1 gold badge17 silver badges54 bronze badges hỏi ngày 20 tháng 2 năm 2017 lúc 15:29Feb 20, 2017 at 15:29
NoitidartnoitidartNoitidart 33.7K33 Huy hiệu vàng131 Huy hiệu bạc299 Huy hiệu đồng33 gold badges131 silver badges299 bronze badges 3 Vì 3 tạo phạm vi khối, bạn cần tạo một khối khác xung quanh nó để giới hạn phạm vi của nó.Một câu lệnh khối được sử dụng để nhóm không hoặc nhiều câu lệnh. Khối được phân định bởi một cặp dấu ngoặc xoăn.
Ngoài ra, bạn có thể sử dụng biểu thức chức năng được gọi ngay lập tức:
Đã trả lời ngày 20 tháng 2 năm 2017 lúc 15:33Feb 20, 2017 at 15:33
0 Đây có lẽ là một thành ngữ không bao giờ được tạo ra cho JS, nhưng chỉ dành cho những cú đá, đây là một người trợ giúp có thể được sử dụng, mặc dù câu trả lời khác có lẽ đúng hơn. Điều này được lấy cảm hứng từ 5 của Clojure, thực hiện chính xác những gì bạn đang tìm kiếm, nhưng không yêu cầu một chức năng vì nó là một macro:
Đã trả lời ngày 20 tháng 2 năm 2017 lúc 16:00Feb 20, 2017 at 16:00
CarcigenicatecigenicateCarcigenicate 41K9 Huy hiệu vàng65 Huy hiệu bạc105 Huy hiệu Đồng9 gold badges65 silver badges105 bronze badges 1 Tuyên bố Thử nóCú pháp
Thông số 7Tên của biến hoặc biến để khai báo. Mỗi người phải là một định danh JavaScript hợp pháp. 8 Tùy chọnOptionalĐối với mỗi biến được khai báo, bạn có thể tùy ý chỉ định giá trị ban đầu của nó cho bất kỳ biểu thức JavaScript pháp lý nào. Ngoài ra, cú pháp gán phá hủy cũng có thể được sử dụng để khai báo các biến.
Sự mô tả 2 keyword, which declares a variable globally, or locally to an entire function regardless of block scope. The other difference between 2 and 3 is that the latter can only be accessed after its declaration is reached (see
temporal dead zone). For this reason, 3 declarations are commonly regarded as non-hoisted. Giống như 4 3 không tạo ra các thuộc tính của đối tượng 6 khi được khai báo trên toàn cầu (trong phạm vi hàng đầu nhất).Một lời giải thích về lý do tại sao cái tên "hãy để" được chọn có thể được tìm thấy ở đây.let" was chosen can be found here. Nhiều vấn đề với các biến 3 có thể tránh được bằng cách khai báo chúng ở đầu phạm vi mà chúng được sử dụng (làm như vậy có thể tác động đến khả năng đọc).Không giống như 2, 3 bắt đầu khai báo, không phải tuyên bố. Điều đó có nghĩa là bạn không thể sử dụng khai báo đơn độc 3 làm phần thân của một khối (điều này có ý nghĩa, vì không có cách nào để truy cập biến).
Ví dụQuy tắc phạm viCác biến được khai báo bởi 3 có phạm vi của chúng trong khối mà chúng được khai báo, cũng như trong bất kỳ khối nào có chứa. Theo cách này, 3 hoạt động rất giống 2. Sự khác biệt chính là phạm vi của biến 2 là toàn bộ hàm kèm theo: 3 have their scope in the block for which they are declared, as well as in any contained sub-blocks. In this way, 3 works very much like 2. The main difference is that the scope of a 2 variable is the entire enclosing function:
Ở cấp cao nhất của các chương trình và chức năng, 3, không giống như 2, không tạo ra một thuộc tính trên đối tượng toàn cầu. Ví dụ: 3, unlike 2, does not
create a property on the global object. For example:
REDECLARATIONViệc kiểm tra lại cùng một biến trong cùng một hàm hoặc phạm vi khối làm tăng 7. 0Bạn có thể gặp lỗi trong các câu lệnh 8 vì chỉ có một khối. 1Tuy nhiên, điều quan trọng là chỉ ra rằng một khối được lồng trong một mệnh đề trường hợp sẽ tạo ra một môi trường từ vựng phạm vi khối mới, sẽ không tạo ra các lỗi điều chỉnh lại được hiển thị ở trên. 2Khu vực chết tạm thời (TDZ)Một biến 3 hoặc 4 được cho là ở "vùng chết tạm thời" (TDZ) từ đầu khối cho đến khi thực thi mã đạt đến dòng nơi biến được khai báo và khởi tạo.Mặc dù bên trong TDZ, biến không được khởi tạo với giá trị và bất kỳ nỗ lực nào để truy cập nó sẽ dẫn đến 1. Biến được khởi tạo với một giá trị khi thực thi đạt đến dòng mã nơi nó được khai báo. Nếu không có giá trị ban đầu được chỉ định với khai báo biến, nó sẽ được khởi tạo với giá trị 2.Điều này khác với các biến 2, sẽ trả về giá trị 2 nếu chúng được truy cập trước khi chúng được khai báo. Mã dưới đây cho thấy kết quả khác nhau khi 3 và 2 được truy cập trong mã trước dòng chúng được khai báo. 3Thuật ngữ "tạm thời" được sử dụng vì vùng phụ thuộc vào thứ tự thực thi (thời gian) thay vì thứ tự mã được viết (vị trí). Ví dụ: mã bên dưới hoạt động bởi vì, mặc dù hàm sử dụng biến 3 xuất hiện trước khi biến được khai báo, hàm được gọi bên ngoài TDZ. 4TDZ và let name1 [= value1] [, name2 [= value2]] [, ..., nameN [= valueN]
|
Sự chỉ rõ |
---|
Đặc tả ngôn ngữ Ecmascript # Sec-Let-and-Const-Declarations # sec-let-and-const-declarations |
Tính tương thích của trình duyệt web
Bảng BCD chỉ tải trong trình duyệt