Trong một thời gian dài, JavaScript phát triển mà không có vấn đề tương thích. Các tính năng mới đã được thêm vào ngôn ngữ trong khi chức năng cũ không thay đổi.
Điều đó có lợi ích của việc không bao giờ phá vỡ code hiện có. Nhưng nhược điểm là bất kỳ sai lầm hoặc quyết định không hoàn hảo nào được tạo ra bởi những người tạo ra JavaScript đã bị mắc kẹt trong ngôn ngữ này mãi mãi.
Đây là trường hợp cho đến năm 2009 khi ECMAScript 5 (ES5) xuất hiện. Nó đã thêm các tính năng mới cho ngôn ngữ và sửa đổi một số tính năng hiện có. Để giữ cho code cũ hoạt động, hầu hết các sửa đổi như vậy được tắt theo mặc định. Bạn cần kích hoạt chúng một cách rõ ràng bằng một lệnh đặc biệt : "use strict"
.
Nội dung chính
1. “Sử dụng nghiêm ngặt”(use strict
)
Lệnh này trông giống như một chuỗi: "use strict"
hoặc 'use strict'
. Khi nó nằm ở trên cùng của một tập lệnh, toàn bộ tập lệnh hoạt động theo cách hiện đại.
Ví dụ:
"use strict";
// this code works the modern way
...
Sẽ sớm thôi, chúng ta sẽ sớm tìm hiểu các hàm (một cách để nhóm các lệnh), vì vậy hãy lưu ý trước rằng "use strict"
có thể được đặt ở đầu một hàm. Làm điều đó cho phép chế độ nghiêm ngặt chỉ trong hàm đó. Nhưng thông thường mọi người sử dụng nó cho toàn bộ kịch bản. Nên sử dụng “use strict”; trên phần đỉnh của file.
Vui lòng đảm bảo rằng đó "use strict"
là ở đầu tập lệnh của bạn, nếu không chế độ nghiêm ngặt có thể không được bật.
Chế độ nghiêm ngặt không được kích hoạt ở đây:
alert("some code");
// "use strict" below is ignored--it must be at the top
"use strict";
// strict mode is not activated
Chỉ có comment có thể dùng "use strict"
.
Không có cách nào để hủy bỏ use strict
Không có chỉ thị nào như thế này "no use strict"
khiến trình biên dịch trở lại hành vi cũ.
Khi chúng ta vào chế độ nghiêm ngặt, sẽ không quay trở lại.
2. Console của trình duyệt
Khi bạn sử dụng bảng điều khiển(Console) dành cho developer để chạy code, xin lưu ý rằng nó không use strict
mặc định.
Đôi khi, khi use strict
tạo sự khác biệt, bạn sẽ nhận được kết quả không chính xác.
Vì vậy, làm thế nào để thực sự use strict
trong giao diện console?
Trước tiên, bạn có thể thử nhấn để nhập nhiều dòng và đặt lên trên cùng, như thế này:Shift+Enteruse strict
'use strict'; <Shift+Enter for a newline>
// ...your code
<Enter to run>
Nó hoạt động trong hầu hết các trình duyệt, cụ thể là Firefox và Chrome.
Nếu không, ví dụ như trong một trình duyệt cũ, có một cách xấu, nhưng đáng tin cậy để đảm bảo use strict
. Đặt nó bên trong loại bao bọc này:
(function() {
'use strict';
// ...your code here...
})()
3. Chúng ta có nên sử dụng ‘use strict’ không?
Câu hỏi nghe có vẻ hiển nhiên, nhưng không phải vậy.
Người ta có thể khuyên bạn nên bắt đầu các kịch bản với chương trình "use strict"
Nhưng bạn biết điều gì thú vị không?
JavaScript hiện đại hỗ trợ các lớp mô-đun và các mô-đun, các cấu trúc ngôn ngữ nâng cao (chắc chắn chúng ta sẽ sử dụng chúng), cho phép use strict
tự động. Vì vậy, chúng ta không cần thêm chỉ thị"use strict"
, nếu chúng ta sử dụng chúng.
Vì vậy, bây giờ "use strict";
là một vị khách được chào đón ở đầu các kịch bản của bạn. Sau này, khi code của bạn bao gồm tất cả các lớp và mô-đun mới, bạn có thể bỏ qua nó.
Đến bây giờ, chúng ta đã biết về use strict
nói chung.
Trong các chương tiếp theo, khi chúng ta tìm hiểu các tính năng ngôn ngữ, chúng ta sẽ thấy sự khác biệt giữa các chế độ nghiêm ngặt mới và cũ. May mắn thay, không có nhiều sự khác nhau và họ thực sự làm cho cuộc sống của chúng ta tốt hơn.
Tất cả các ví dụ trong hướng dẫn này giả định sử dụng chế độ nghiêm ngặt trừ khi (rất hiếm khi) được chỉ định khác.
Điều đó có lợi ích của việc không bao giờ phá vỡ code hiện có. Nhưng nhược điểm là bất kỳ sai lầm hoặc quyết định không hoàn hảo nào được tạo ra bởi những người tạo ra JavaScript đã bị mắc kẹt trong ngôn ngữ mãi mãi.
Đây là trường hợp cho đến năm 2009 khi ECMAScript 5 (ES5) xuất hiện. Nó đã thêm các tính năng mới cho ngôn ngữ và sửa đổi một số tính năng hiện có. Để giữ cho code cũ hoạt động, hầu hết các sửa đổi như vậy được tắt theo mặc định. Bạn cần kích hoạt chúng một cách rõ ràng bằng một lệnh đặc biệt : "use strict"
(Sử dụng nghiêm ngặt).
4. “use strict
“
Lệnh này trông giống như một chuỗi: "use strict"
hoặc 'use strict'
. Khi nó nằm ở trên cùng của một tập lệnh, toàn bộ tập lệnh hoạt động theo cách hiện đại.
Ví dụ:
"use strict";
// this code works the modern way
...
Sẽ sớm thôi, chúng ta sẽ sớm tìm hiểu các hàm (một cách để nhóm các lệnh), vì vậy hãy lưu ý trước rằng "use strict"
có thể được đặt ở đầu một hàm. Làm điều đó cho phép chế độ nghiêm ngặt chỉ trong hàm đó. Nhưng thông thường mọi người sử dụng nó cho toàn bộ kịch bản.
Đảm bảo rằng sử dụng "use strict"
trên đỉnh của code mà bạn cần dùng nó
Vui lòng đảm bảo rằng đó "use strict"
là ở đầu tập lệnh của bạn, nếu không chế độ nghiêm ngặt có thể không được bật.
Chế độ nghiêm ngặt không được kích hoạt ở đây:
alert("some code");
// "use strict" below is ignored--it must be at the top
"use strict";
// strict mode is not activated
Chỉ có comment bên dưới mới dùng "use strict"
ở trên.
Không có cách nào để hủy bỏ use strict
Không có chỉ thị nào như thế này:"no use strict"
khiến động cơ trở lại xửa lý các hành vi, code cũ.
Khi chúng ta vào chế độ nghiêm ngặt, sẽ không quay trở lại.
5. Bảng điều khiển trình duyệt(Console)
Khi bạn sử dụng bảng điều khiển dành cho nhà phát triển để chạy code, xin lưu ý rằng nó không use strict
mặc định.
Đôi khi, khi use strict
tạo ra sự khác biệt, bạn sẽ nhận được kết quả không chính xác.
Vì vậy, làm thế nào để thực sự use strict
trong giao diện điều khiển?
Trước tiên, bạn có thể thử nhấn để nhập nhiều dòng và đặt lên trên cùng, như thế này:Shift+Enteruse strict
'use strict'; <Shift+Enter for a newline>
// ...your code
<Enter to run>
Nó hoạt động trong hầu hết các trình duyệt, cụ thể là Firefox và Chrome.
Nếu không, ví dụ như trong một trình duyệt cũ, có một cách xấu, nhưng đáng tin cậy để đảm bảo use strict
. Đặt nó bên trong loại bao bọc này:
(function() {
'use strict';
// ...your code here...
})()
6. Chúng ta có nên sử dụng nghiêm ngặt không?
Câu hỏi nghe có vẻ hiển nhiên, nhưng không phải vậy.
Người ta có thể khuyên bạn nên bắt đầu các kịch bản với chương trình "use strict"
Nhưng bạn biết điều gì thú vị không?
JavaScript
hiện đại hỗ trợ các lớp mô-đun và các mô-đun, các cấu trúc ngôn ngữ
nâng cao (chắc chắn chúng tôi sẽ sử dụng chúng), cho phép use strict
tự động. Vì vậy, chúng ta không cần thêm "use strict"
chỉ thị, nếu chúng ta sử dụng chúng.
Vì vậy, bây giờ "use strict";
là một vị khách được chào đón ở đầu các kịch bản của bạn. Sau này, khi mã của bạn là tất cả trong các lớp và mô-đun, bạn có thể bỏ qua nó.
Đến bây giờ, chúng ta đã biết về use strict
nói chung.
Trong các chương tiếp theo, khi chúng ta tìm hiểu các tính năng ngôn ngữ, chúng ta sẽ thấy sự khác biệt giữa các chế độ nghiêm ngặt và cũ. May mắn thay, không có nhiều sự khác biệt và họ thực sự làm cho cuộc sống của chúng ta tốt hơn.
Tất cả các ví dụ trong hướng dẫn này giả định chế độ nghiêm ngặt trừ khi (rất hiếm khi) được chỉ định khác.