Javascript Var Vas Hãy để

Từ khóa 'let' đã được giới thiệu trong ES6 (2015). Là một nhà phát triển, chúng tôi tiếp tục sử dụng nó như var chỉ biết rằng nó giới hạn phạm vi của biến trong một khối

Trong bài viết này, tôi sẽ chỉ thảo luận về một mã rất phổ biến trong đó việc sử dụng let vs var có thể tạo ra nhiều khác biệt và cố gắng hiểu tại sao mã lại hoạt động khác

Hãy lấy một mã hiện có từ blog của tôi, nơi chúng tôi đã cố triển khai chức năng tìm nạp

Chúng tôi sẽ cố gắng hiểu dòng 16 đến 27

Được chứ. Đoạn mã trên dường như đang hoạt động tốt. Bạn có thể thử nó tại fiddle. đầu ra là

phản hồi của đoạn mã trên

Hãy thực hiện một thay đổi nhỏ và thay đổi từ khóa let ở dòng 16 thành var và xem

Và…. đầu ra trở thành

Đầu ra nếu chúng ta sử dụng var w/o bất kỳ chỉnh sửa nào

Nhưng tại sao?

Hãy xem nào. 👀

Từ khóa var đưa ra phạm vi biến của hàm mà nó được khai báo hoặc ngữ cảnh thực thi và cách đóng của nó. Do đó, chỉ khai báo một lần. Sẽ chỉ có một tham chiếu cho i được sử dụng bởi mỗi lần gọi lại cho fetchData, có nghĩa là vào thời điểm phương thức gọi lại chạy, giá trị của i phải thay đổi thành một giá trị khác. Trong trường hợp trên, có vẻ như toàn bộ vòng lặp đã chạy và i được đặt thành 4. urls đang cố truy cập vào chỉ mục thứ 4 là var0. Ngoài ra, mảng phản hồi ở chỉ mục thứ 4 được thay đổi mỗi lần. Do đó, mảng phản hồi có kích thước 4.

let xác định phạm vi cho biến ở cấp độ khối. Chà, điều này có nghĩa là gì trong mã 1?

Điều đó có nghĩa là, biến i sẽ được tạo lại mỗi khi vòng lặp var3 lặp lại. Vì vậy, đối với một giá trị của i, tham chiếu biến là mới với giá trị mới cho phương thức gọi lại được gửi cùng với fetchData. Do đó, i được gọi để ghi url vẫn khác nhau đối với mỗi lần lặp lại và có giá trị mà phương thức gọi lại được tạo và do đó, tổng thể của phản hồi nằm ở đúng chỉ mục và url chính xác

Vì vậy, chúng ta hãy dường như để làm các trick. Nhưng điều đó không có nghĩa là, trước khi let được giới thiệu, nó không thể được thực hiện. đoạn mã dưới đây hoặc trên thực tế, việc đóng cửa sẽ sửa nó

Hãy thử nó ở đây

Tôi sẽ không đề cập đến các lần đóng cửa trong bài đăng này vì đây là một chủ đề rộng lớn và là một trong những chủ đề quan trọng nhất trong JavaScript. Mục đích chính là để hiểu sự khác biệt giữa letvar, điều này đôi khi có thể tạo ra sự nhầm lẫn về lý do tại sao điều mong đợi không xảy ra

Phần kết luận

varlet đều được sử dụng để khai báo biến trong JavaScript nhưng sự khác biệt giữa chúng là var thuộc phạm vi chức năng và let thuộc phạm vi khối. Có thể nói rằng một biến được khai báo bằng var được định nghĩa xuyên suốt chương trình so với let. Đôi khi, việc sử dụng let giúp chúng ta dễ dàng và có thể thoát khỏi việc sử dụng các bao đóng nếu cần. Vấn đề nổi tiếng trong vòng lặp let0 cũng có thể được giải quyết bằng cách sử dụng let nếu chúng ta không muốn kèm theo nó với bao đóng

ES6 đi kèm với rất nhiều tính năng mới tuyệt vời bao gồm hai cách mới để xác định các biến trong JavaScript. Hiện tại có ba từ khóa hoặc mã định danh khác nhau để khai báo một biến trong JavaScript. Trong bài viết này, tôi sẽ giải thích sự khác biệt chính giữa var, let và const và khi nào bạn nên sử dụng chúng.

Để hiểu đầy đủ sự khác biệt giữa từng mã định danh, trước tiên chúng ta cần hiểu khái niệm về phạm vi

Phạm vi là gì?

Phạm vi xác định khả năng truy cập hoặc khả năng hiển thị của các biến đối với JavaScript. Có ba loại phạm vi trong JavaScript

1. Phạm vi toàn cầu

2. Phạm vi chức năng (cục bộ)

3. Phạm vi chặn (mới với ES6)

Các biến được khai báo bên ngoài một hàm nằm trong phạm vi toàn cầu. Các biến toàn cục có thể được truy cập và thay đổi trong bất kỳ phạm vi nào khác. Các biến được xác định trong một hàm thuộc phạm vi cục bộ và không thể truy cập được trong các hàm khác. Mỗi chức năng khi được gọi sẽ tạo ra một phạm vi mới, do đó các biến có cùng tên có thể được sử dụng trong các chức năng khác nhau.

Phạm vi khối bao gồm các câu lệnh và vòng lặp if hoặc bất kỳ mã nào khác được gói trong {}. Khi được gọi, chúng không tạo phạm vi mới. Các biến được khai báo bên trong phạm vi khối sẽ vẫn ở trong phạm vi mà chúng đã có

Từ khóa Var

Trước ES6, từ khóa var được sử dụng để khai báo một biến trong JavaScript. Từ khóa var đã xuất hiện kể từ khi JavaScript ra đời và đó là thứ bạn sẽ thấy trong bất kỳ mã ES6 nào trước đây.

Các biến được khai báo bằng từ khóa var có phạm vi toàn cầu hoặc chức năng, chúng không hỗ trợ phạm vi cấp khối. Điều này có nghĩa là nếu một biến được định nghĩa trong vòng lặp hoặc trong câu lệnh if thì nó có thể được truy cập bên ngoài khối và vô tình được định nghĩa lại dẫn đến chương trình có lỗi. Về nguyên tắc chung, bạn nên luôn khai báo biến với const, nếu bạn nhận thấy giá trị của biến cần thay đổi, hãy quay lại và thay đổi thành let

Tôi có nên sử dụng let hoặc var trong JavaScript không?

Quy tắc chung là bạn luôn phải khai báo biến với const, nếu bạn nhận thấy giá trị của biến cần thay đổi thì quay lại đổi thành let. Sử dụng let khi bạn biết rằng giá trị của một biến sẽ thay đổi . Sử dụng const cho mọi biến khác. Không sử dụng va.

Sự khác biệt giữa let và var trong JavaScript là gì?

var và let đều được sử dụng để khai báo biến trong javascript nhưng điểm khác biệt giữa chúng là var là phạm vi chức năng và let là phạm vi khối . Biến được khai báo bằng let không thể được khai báo lại và phải được khai báo trước khi sử dụng trong khi các biến được khai báo bằng từ khóa var được nâng lên.

Var có còn được sử dụng trong JavaScript không?

Các biến được khai báo bên ngoài bất kỳ chức năng và khối nào là toàn cục và được cho là có Phạm vi toàn cục. Điều này có nghĩa là bạn có thể truy cập chúng từ bất kỳ phần nào của chương trình JavaScript hiện tại. Bạn có thể sử dụng var , let và const để khai báo các biến toàn cục . Nhưng bạn không nên làm điều đó quá thường xuyên.

Khi nào sử dụng var JavaScript?

Luôn khai báo các biến JavaScript với var , let hoặc const. Từ khóa var được sử dụng trong tất cả mã JavaScript từ 1995 đến 2015 . Từ khóa let và const đã được thêm vào JavaScript vào năm 2015. Nếu bạn muốn mã của mình chạy trong các trình duyệt cũ hơn, bạn phải sử dụng var.