`strict mode` trong JavaScript

`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, thisundefined.

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.

YouTube Video