`strict mode` trong JavaScript
Bài viết này giải thích về strict mode
trong JavaScript.
YouTube Video
strict mode
trong JavaScript
Trong JavaScript, strict mode
là một tính năng được giới thiệu trong ECMAScript 5 (ES5) để làm cho mã an toàn hơn và ngăn ngừa lỗi. Bằng cách sử dụng strict mode, một số cú pháp dễ dãi và các tính năng có thể gây rủi ro sẽ bị vô hiệu hóa, và các kiểm tra lỗi nghiêm ngặt hơn sẽ được áp dụng. Điều này giúp các nhà phát triển tránh các hành vi không mong muốn và viết mã mạnh mẽ, hiệu suất cao hơn.
Kích hoạt strict mode
Để kích hoạt strict mode
, hãy thêm chỉ thị sau vào đầu mã của bạn.
1"use strict";
Tuyên bố này có thể được áp dụng cho toàn bộ tập lệnh hoặc cho từng hàm cụ thể. Ví dụ, nếu được áp dụng cho toàn bộ tập lệnh, bạn có thể viết như sau:.
1"use strict";
2
3function example() {
4 // Strict mode is applied
5}
Nếu được áp dụng trên từng hàm, bạn có thể viết như sau:.
1function example() {
2 "use strict";
3 // Strict mode is applied only within this function
4}
strict mode
được áp dụng theo từng phạm vi, vì vậy nó cũng có thể được kích hoạt bên trong một hàm. Ngoài ra, vì strict mode
được bật mặc định trong các mô-đun nên bạn không cần khai báo nó riêng lẻ trong mô-đun.
Các tính năng chính và khác biệt của strict mode
Việc sử dụng strict mode
thay đổi một số hành vi mặc định của JavaScript. Dưới đây là các ví dụ chính.
Cấm sử dụng các biến toàn cục ngầm định
Trong JavaScript thông thường, việc bỏ qua khai báo biến sẽ tự động định nghĩa chúng là các biến toàn cục, nhưng trong strict mode
, điều này sẽ gây ra lỗi.
1"use strict";
2
3x = 10; // Error: x is not defined
Các biến phải luôn được khai báo bằng cách sử dụng var
, let
, hoặc const
.
Hạn chế sử dụng các từ khóa được giữ lại
Các từ khóa JavaScript tiềm năng trong tương lai (vd: implements
, interface
, package
, v.v.) không thể được sử dụng làm tên biến hoặc hàm trong strict mode
.
1"use strict";
2
3var package = "strict mode"; // Error: Unexpected strict mode reserved word
Thay đổi trong hành vi của this
Trong chế độ bình thường, this
bên trong một hàm tham chiếu đến đối tượng toàn cục (vd: window
trong trình duyệt), nhưng trong strict mode
, this
là undefined
.
1"use strict";
2
3function example() {
4 console.log(this); // undefined
5}
6
7example();
Điều này giúp ngăn ngừa lỗi do sử dụng sai this
.
Cấm xóa các thuộc tính không thể xóa
Trong chế độ bình thường, việc cố gắng xóa thuộc tính không thể xóa của đối tượng sẽ bị bỏ qua mà không gây lỗi, nhưng trong strict mode
, điều này sẽ gây ra lỗi.
1"use strict";
2
3var obj = Object.freeze({name: "John"});
4delete obj.name; // Error: Cannot delete property 'name'
Cấm sử dụng tên tham số trùng lặp
Trong chế độ bình thường, việc khai báo các tham số với cùng tên nhiều lần được phép, nhưng trong strict mode
, điều này gây ra lỗi.
1"use strict";
2
3function example(a, a) {
4 // Error: Duplicate parameter name not allowed in this context
5}
Cấm sử dụng câu lệnh with
Câu lệnh with
có thể làm giảm khả năng đọc mã và bị cấm trong strict mode
.
1"use strict";
2
3with (Math) {
4 // Error: Strict mode code may not include a with statement
5}
Ưu điểm của strict mode
strict mode
cải thiện độ an toàn và hiệu quả của mã theo nhiều cách.
Cải thiện khả năng phát hiện lỗi
Trong strict mode
, các lỗi bị bỏ qua trong chế độ bình thường được phát hiện, cho phép các nhà phát triển bắt lỗi tiềm ẩn sớm. Ví dụ, nó ngăn ngừa việc tạo các biến toàn cục không mong muốn và việc sử dụng sai các từ khóa dành riêng.
Cải thiện hiệu suất
Trong strict mode
, các công cụ JavaScript có thể tối ưu hóa mã hiệu quả hơn. Kết quả là, tốc độ thực thi có thể được cải thiện.
Tăng cường bảo mật mã
Việc xử lý this
trở nên nghiêm ngặt hơn, ngăn chặn truy cập vào các đối tượng toàn cục không cần thiết, do đó cải thiện độ bảo mật của mã. Ngoài ra, việc hạn chế sử dụng các từ khóa dành riêng tránh các xung đột trong tương lai với các từ khóa.
Khả năng tương thích và các lưu ý
strict mode
được giới thiệu trong ECMAScript 5 và không được hỗ trợ trong các trình duyệt phát hành trước đó. Tuy nhiên, việc kích hoạt strict mode
sẽ đơn giản bị bỏ qua bởi các trình duyệt không hỗ trợ mà không làm hỏng script. Do đó, nó thường có thể được sử dụng một cách an toàn.
Khi giới thiệu strict mode
vào một dự án lớn hiện có, việc kiểm tra kỹ lưỡng là rất quan trọng để tránh các lỗi không mong muốn.
Kết luận
strict mode
trong JavaScript là một tính năng cực kỳ hữu ích để cải thiện chất lượng mã. Đặc biệt, đối với các dự án lớn hoặc phát triển theo nhóm, nên chủ động sử dụng chế độ nghiêm ngặt để ngăn ngừa lỗi và lỗi không mong muốn, cũng như cải thiện khả năng đọc và duy trì mã.
Hiểu và áp dụng đúng strict mode
giúp tránh các cạm bẫy trong JavaScript và cho phép phát triển an toàn và hiệu quả hơn.
Bạn có thể làm theo bài viết trên bằng cách sử dụng Visual Studio Code trên kênh YouTube của chúng tôi. Vui lòng ghé thăm kênh YouTube.