Strict Mode trong JavaScript

Từ khóa use strict là từ khóa để bật chế độ Strict Mode, tạm dịch là chế độ nghiêm ngặt của JavaScript, bắt đầu xuất hiện từ phiên bản ECMAScript 5. Khi một đoạn lệnh được khai báo use strict thì tất cả các dòng code ở phía dưới dòng khai báo use strict sẽ được JavaScript quản lý nghiêm ngặt hơn về mặt cú pháp.

Strict mode trong javascript là gì?

Strict hiểu đơn giản theo nghĩa tiếng Việt là “nghiêm ngặt, nghiêm khắc”. Strict Mode là một quy mẫu nghiêm khắc của Javascript. Nếu như coi việc viết code bình thường là Normal Mode, thì Strict Mode sẽ có thêm nhiều quy định khác so với Normal Mode. Việc đó khiến cho một thao tác vốn bình thường có thể chạy ngon lành trở nên lỗi, và throw ra errors.

Nhìn chung, Strict được tạo ra nhằm mục đích :

  • Ngăn chặn sử dụng, và throw errors khi người lập trình thực hiện những xử lý được coi là unsafe, những xử lý mà có thể là ngoài ý muốn.
  • Vô hiệu hoá các tính năng có thể gây nhầm lẫn, hoặc không nên được sử dụng.
  • Ngăn chặn sử dụng một số từ mà có thể sẽ được sử dụng làm keywork trong tương lai.

Strict Mode có nhiều hạn chế hơn so với normal mode. Với việc tuân theo những quy định đó, bạn sẽ làm cho code Javascript của mình trở nên sáng sủa, dễ đọc hơn, cũng như ít vướng phải những lỗi không mong muốn.

Bạn đang đọc: Strict Mode trong JavaScript

Khi đọc đến đây, chắc hẳn bạn sẽ đặt câu hỏi rằng, vậy sau người ta không thay đổi hẳn phần đặc tả của ECMAScript liên quan đến những gì được đề cập trong Strict Mode đi, mà lại sinh ra thêm cái Strict Mode làm gì cho nó rắc rối?

Có lẽ một phần là để bảo vệ phần nào tính backward compatible giữa ES5 và phiên bản trước đó là ES3, phần nữa là để ECMAScript vẫn giữ được tính đơn thuần, mềm dẻo từ trước, chứ không phải bị số lượng giới hạn bởi những quy tắc cứng ngắc mới được thêm vào. Từ đó ECMAScript sẽ trở nên thuận tiện tiếp cận hơn so với những người mới làm quen .

Tuy nhiên khi đã qua giai đoạn “làm quen” rồi, thì bạn cần thay đổi. Đó là lúc bạn cần đến Strict Mode.

Cách sử dụng strict mode trong javascript

Để bật chính sách strict mode cũng rất đơn thuần, bạn chỉ cần đặt như thế này ở đầu file JS, hoặc đầu một hàm :

" use strict ";

Chỉ cần gõ như vậy ở đầu một file ( dành cho toàn cục ), hay đầu một function ( dành cho cục bộ ) .

Khai báo strict mode trong toàn cục

Các bạn xem đoạn code dưới đây, tình huống đặt ra là chúng ta sử dụng use strict cho toàn bộ code JavaScript. Sau đó, chúng ta không khai báo biến message mà vẫn sử dụng nó.

>

" use strict "; message = " Học lập trình JavaScript cơ bản ! "; document.write(message);

< / p script>

Kết quả trong tab console như sau :

Khai báo strict mode trong toàn cục

Chương trình sẽ báo lỗi như trên do tất cả chúng ta sử dụng strict mode ( chính sách code khắt khe ). Bây giờ mình comment dòng / / “ use strict ” ; lại và chạy lại để xem tác dụng :

strict mode trong toàn cục

Chương trình sẽ chạy bình thường dù chúng ta không khai báo biến message trước đó. Nhưng, điều này có thể gây ra lỗi về sau.

Khai báo strict mode trong cục bộ

Để khai báo stric mode trong cục bộ, đơn giản là bạn đặt use strict trong phạm vi cục bộ nào đó.

Ví dụ, mình tinh chỉnh một chút ít ở đoạn code trên để nó thành khoanh vùng phạm vi cục bộ cho những bạn tiện theo dõi .

>

function print_message() { " use strict "; } print_message(); message = " Phạm vi ngoài hàm print_message "; document.write(message

)

;

< / p script>

Chạy trên trình duyệt, tác dụng nhận được :

strict mode trong cục bộ

Đoạn code này thì kết quả vẫn chạy bình thường vì chúng ta use strict trong hàm print_message() nên không ảnh hưởng ra bên ngoài.

Nếu tất cả chúng ta sử dụng một biến không khai báo trong khoanh vùng phạm vi cục bộ này thì chương trình sẽ báo lỗi và không chạy .

>

function print_message() { " use strict "; message = " Học lập trình JavaScript cơ bản ! "; document.write(message); } print_message(); message = " Phạm vi ngoài hàm print_message "; document.write(message);

< / p script>

Đến đây thì bạn đã hiểu cơ bản về chính sách khắt khe trong khoanh vùng phạm vi toàn cục và khoanh vùng phạm vi cục bộ rồi .

Browser console

Khi bạn sử dụng developer console trên trình duyệt (như chrome, safari,…) để chạy code thì mặc định là chế độ không nghiêm ngặt. Đôi khi bạn cần sử dụng chế độ use strict để kiểm tra kết quả thì hãy thêm "use strict" như các ví dụ bên trên nhé.

' use strict '; 
 
>

Vậy có nên sử dụng use strict không

Câu vấn đáp có vẻ như hiển nhiên là có, nhưng không phải vậy .
Người ta hoàn toàn có thể khuyên bạn nên mở màn những tập lệnh với ” use strict ” … Nhưng bạn biết điều gì mê hoặc không ?

JavaScript hiện đại hỗ trợ classesmodules – các cấu trúc ngôn ngữ nâng cao (chúng ta sẽ tìm hiểu ở các bài sau), mà tự động sử dụng use strict. Vì vậy, chúng ta không cần phải thêm chỉ thị “use strict”, nếu chúng ta sử dụng chúng.