Use Strict Là Gì

  -  

Strict Mode (Chế độ nghiêm ngặt) là một chế độ giúp bạn viết code JavaScript “bảo mật” (secure) dễ dàng hơn.Bạn đang xem: Use strict là gì

– Chế độ nghiêm ngặt thay đổi “cú pháp sai” đã được chấp nhận trước đó thành lỗi thực tế. Ví dụ: trong JavaScript bình thường, khi bạn viết hay sử dụng 1 biến “giữa trời” mà nó chưa được khai báo bằng 1 trong các từ khóa như var, let, hay const rồi gán giá trị cho nó, thì biến đó sẽ được JavaScript hiểu là 1 biến toàn cục. Trong chế độ nghiêm ngặt, điều này sẽ ném một lỗi, làm cho nó không thể “vô tình” tạo ra một biến toàn cục kiểu như vậy.

Bạn đang xem: Use strict là gì

Ví dụ:

"use strict";x = 3.14;// Error

– Trong JavaScript bình thường, các lập trình viên sẽ không nhận được bất kỳ phản hồi lỗi nào khi chỉ định (gán) giá trị cho thuộc tính không thể ghi (non-writable).

– Trong chế độ nghiêm ngặt (Strict Mode), bất kỳ phép gán giá trị nào đến thuộc tính không thể ghi, thuộc tính chỉ getter (getter-only), thuộc tính không tồn tại (non-existing), biến không tồn tại hoặc đối tượng không tồn tại đều ném (throw) ra lỗi.

2. Cách khai báo Strict Mode2. Cách khai báo Strict Mode

– Chỉ thị “use strict”; lần đầu được giới thiệu kể từ ECMAScript version 5, nó không phải là một câu lệnh mà là một literal expression.

Xem thêm: Top 5 Cặp Đôi Được Fan Ship Nhiều Nhất Trong Naruto !!! 2021

– Mục đích của “use strict” là để chỉ ra rằng code sẽ được thực hiện trong “chế độ nghiêm ngặt” (strict mode). Khi có lỗi ở dòng nào sẽ thông báo lỗi và stop ngay tại dòng đó mà không thực hiện tiếp các câu lệnh bên dưới.

– Tất cả các trình duyệt hiện đại đều hỗ trợ “use strict” ngoại trừ Internet Explorer 9 và các phiên bản IE cũ hơn.

Xem thêm: Top 24 Ứng Dụng Hay Cho Android 6.0, Những Điểm Mới Nổi Bật Trong Android 6

– Khi chỉ thị “use strict”; được khai báo ở đầu tập lệnh script, nó có phạm vi toàn cục (global scope) (tất cả mã trong tập lệnh sẽ thực thi ở chế độ nghiêm ngặt):

Ví dụ:

"use strict";x = 3.14;// Lỗi vì biến x chưa được khai báomyFunction();function myFunction() { y = 3.14;// Lỗi vì biến y chưa được khai báo}Try it »

– Còn khi được khai báo bên trong một hàm, nó có phạm vi cục bộ (local scope) (chỉ phần code bên trong hàm này ở chế độ nghiêm ngặt):

Ví dụ:

x = 3.14; // Ở đây không lỗi, x lúc này trở thành biến toàn cụcmyFunction();function myFunction() { "use strict"; y = 3.14; // Lỗi vì biến y chưa được khai báoTry it »3. Điều gì không được phép ở chế độ nghiêm ngặt?3. Điều gì không được phép ở chế độ nghiêm ngặt?– Sử dụng một biến (kể cả biến thường hay biến object) chưa được khai báo là không được phép:

Ví dụ:

"use strict";x = 3.14;// Lỗi vì biến x chưa được khai báoVí dụ:"use strict";x = {p1:10, p2:20};// Lỗi vì y chưa được khai báoTry it »

– Xóa một biến (hay đối tượng) là không được phép:

Ví dụ:

"use strict";var x = 3.14;delete x;// ErrorTry it »

– Xóa một hàm (function) là không được phép:

Ví dụ:

"use strict";function x(p1, p2) {}; delete x;// ErrorTry it »

– Hàm bị trùng lặp tên parameter là không được phép:

Ví dụ:

"use strict";function x(p1, p1) {};// ErrorTry it »

– Octal numeric literals là không được phép:

Ví dụ:

"use strict";var x = 010; // ErrorTry it »

– Các ký tự Octal escape là không được phép:

Ví dụ:

"use strict";var x = "\010";// ErrorTry it »

– Không được phép ghi vào một thuộc tính chỉ đọc (read-only):

Ví dụ:

"use strict";var obj = {};Object.defineProperty(obj, "x", {value:0, writable:false});obj.x = 3.14;// ErrorTry it »

– Không được phép ghi vào thuộc tính chỉ nhận (get-only):

Ví dụ:

"use strict";var obj = {get x() {return 0} };obj.x = 3.14;// ErrorTry it »

– Xóa một thuộc tính khổng thể xóa (undeletable) là không được phép:

Ví dụ:

"use strict";delete Object.prototype; // ErrorTry it »

– Không thể sử dụng “eval” làm biến:

Ví dụ:

"use strict";var eval = 3.14;// ErrorTry it »

– Không thể sử dụng “arguments” làm biến:

Ví dụ:

"use strict";var arguments = 3.14;// ErrorTry it »

– Câu lệnh “with” là không được phép:

Ví dụ:

"use strict";with (Math){x = cos(2)}; // ErrorTry it »

– Vì lý do bảo mật, eval () không được phép tạo các biến trong phạm vi mà từ đó nó được gọi:

Ví dụ:

"use strict";eval ("var x = 2");alert (x);// ErrorTry it »★ Ngoài ra, không thể sử dụng các từ khóa dành riêng cho các phiên bản JavaScript trong tương lai dưới dạng tên biến ở chế độ nghiêm ngặt (strict mode.):implementsinterfaceletpackageprivateprotectedpublicstaticyieldVí dụ:"use strict";var public = 1500;// ErrorChỉ thị “use strict”; chỉ được nhận ra ở đầu tập lệnh script hoặc bắt đầu hàm.

Cảm ơn bạn đã theo dõi. Đừng ngần ngại hãy cùng thảo luận với chúng tôi! 0 0 voteArticle Ratingjavascript tutorial javascript use strict js lập trình strict mode javascriptFacebookTwitterPinterestLinkedIn
*

*

*

*

JavaScript

Tổng quan về function trong JavaScript

JavaScript

Những điểm mới trong ES6 (ECMAScript 2015)

Giới thiệu

Minh HoàngXin chào, tôi là Hoàng Ngọc Minh, hiện đang làm BrSE, tại công ty Toyota, Nhật Bản. Những gì tôi viết trên blog này là những trải nghiệm thực tế tôi đã đúc rút ra được trong cuộc sống, quá trình học tập và làm việc. Các bài viết được biên tập một cách chi tiết, linh hoạt để giúp bạn đọc có thể tiếp cận một cách dễ dàng nhất. Hi vọng nó sẽ có ích hoặc mang lại một góc nhìn khác cho bạnXem tất cả bài viết {} Name* Email* {} Name* Email* 3 Comments Thích nhiều nhất Mới nhất Cũ nhất Inline FeedbacksView all comments Từ khóa this trong JavaScript - Minh Hoàng Blog | Cùng nhau chia sẻ kiến thức lập trình, tự học tiếng Nhật online và cuộc sống Nhật Bản! 2 years ago 0 Reply Những điểm mới trong ES5 (ECMAScript 2009) - Minh Hoàng Blog | Cùng nhau chia sẻ kiến thức lập trình, tự học tiếng Nhật online và cuộc sống Nhật Bản! 2 years ago Chỉ thị “use strict” 0 Reply Khái niệm Hoisting trong JavaScript – Minh Hoàng Blog | Cùng nhau chia sẻ kiến thức lập trình, tự học tiếng Nhật online và cuộc sống Nhật Bản! 4 months ago0 ReplyBài viết được xem nhiều Bài viết được bình luận nhiều Welcome to Minh Hoàng BlogKết nối với chúng tôi