Tại sao sử dụng nghiêm ngặt được sử dụng trong JavaScript?

Trong một thời gian dài, JavaScript đã phát triển mà không gặp sự cố 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 là không bao giờ vi phạm mã 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ủa những người tạo ra JavaScript đều 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 vào ngôn ngữ và sửa đổi một số tính năng hiện có. Để giữ cho mã cũ hoạt động, hầu hết các sửa đổi như vậy đều bị 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 chỉ thị đặc biệt. "use strict"

Chỉ thị trông giống như một chuỗi. "use strict" hoặc 'use strict'. Khi nó nằm ở đầu tập lệnh, toàn bộ tập lệnh sẽ hoạt động theo cách “hiện đại”

Ví dụ

"use strict";

// this code works the modern way
...

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 có thể đặt ____________ ở đầu một hàm. Làm điều đó chỉ cho phép chế độ nghiêm ngặt trong chức năng đó. 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 nghiêm ngặt” ở trên cùng

Vui lòng đảm bảo rằng "use strict" ở đầ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 bật ở đây

alert("some code");
// "use strict" below is ignored--it must be at the top

"use strict";

// strict mode is not activated

Chỉ nhận xét có thể xuất hiện trên "use strict"

Không có cách nào để hủy bỏ

alert("some code");
// "use strict" below is ignored--it must be at the top

"use strict";

// strict mode is not activated
0

Không có chỉ thị nào như

alert("some code");
// "use strict" below is ignored--it must be at the top

"use strict";

// strict mode is not activated
1 hoàn nguyên động cơ về hành vi cũ

Khi chúng tôi vào chế độ nghiêm ngặt, sẽ không quay lại

Khi bạn sử dụng bảng điều khiển dành cho nhà phát triển để chạy mã, xin lưu ý rằng nó không ____1_______0 theo mặc định

Đôi khi, khi

alert("some code");
// "use strict" below is ignored--it must be at the top

"use strict";

// strict mode is not activated
0 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ự

alert("some code");
// "use strict" below is ignored--it must be at the top

"use strict";

// strict mode is not activated
0 trong bảng điều khiển?

Đầu tiên, bạn có thể thử nhấn Shift + Enter để nhập nhiều dòng và đặt

alert("some code");
// "use strict" below is ignored--it must be at the top

"use strict";

// strict mode is not activated
0 lên trên, như thế này.

________số 8_______

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, e. g. trong một trình duyệt cũ, có một cách xấu nhưng đáng tin cậy để đảm bảo

alert("some code");
// "use strict" below is ignored--it must be at the top

"use strict";

// strict mode is not activated
0. Đặt nó bên trong loại giấy gói này

(function() {
  'use strict';

  // ...your code here...
})()

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 viết kịch bản bằng "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” và “mô-đun” – các cấu trúc ngôn ngữ nâng cao (chắc chắn chúng ta sẽ tìm hiểu về chúng), tự động kích hoạt

alert("some code");
// "use strict" below is ignored--it must be at the top

"use strict";

// strict mode is not activated
0. Vì vậy, chúng tôi không cần thêm chỉ thị "use strict", nếu chúng tôi sử dụng chúng

Vì vậy, hiện tại

'use strict'; 
//  ...your code
0 là khách mời được chào đón ở đầu 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ề

alert("some code");
// "use strict" below is ignored--it must be at the top

"use strict";

// strict mode is not activated
0 nói chung

Trong các chương tiếp theo, khi tìm hiểu các đặc điểm của ngôn ngữ, chúng ta sẽ thấy sự khác biệt giữa chế độ nghiêm ngặt và chế độ cũ. May mắn thay, không có nhiều và chúng thực sự làm cho cuộc sống của chúng ta tốt hơn

Chế độ nghiêm ngặt có thể được áp dụng cho toàn bộ tập lệnh hoặc chức năng riêng lẻ bằng cách bao gồm 'use strict' trước bất kỳ câu lệnh nào khác

Điều này thực thi phân tích cú pháp chặt chẽ hơn và xử lý lỗi mã JavaScript, như được mô tả bên dưới

Không có biến toàn cầu ngẫu nhiên

Chế độ nghiêm ngặt giúp không thể vô tình tạo các biến toàn cục do nhập sai tên biến. Các bài tập sẽ vô tình tạo ra các biến toàn cục, thay vào đó sẽ gây ra lỗi ở chế độ nghiêm ngặt

Loại bỏ các lỗi im lặng

Chế độ nghiêm ngặt thay đổi một số lỗi được chấp nhận trước đó thành lỗi. Bao gồm các

  • Các nhiệm vụ sẽ âm thầm thất bại
  • Xóa các thuộc tính không thể xóa hoặc tên đơn giản
  • Tên trùng lặp trong đối số chức năng
  • Chữ bát phân có tiền tố 0
  • Đặt thuộc tính trên nguyên thủy

Đơn giản hóa eval

Chế độ nghiêm ngặt làm cho eval minh bạch hơn bằng cách ngăn việc đưa các biến mới vào phạm vi xung quanh. Ở chế độ nghiêm ngặt, eval chỉ tạo các biến cho mã đang được đánh giá

Đơn giản hóa arguments

Chế độ nghiêm ngặt đơn giản hóa arguments, bằng cách loại bỏ một số tác dụng phụ của chúng. arguments không có bí danh, do đó chúng luôn tham chiếu đến các đối số ban đầu khi hàm được gọi. Hơn nữa, arguments.calleearguments.caller không còn được hỗ trợ

Không this đấm bốc

Chế độ nghiêm ngặt làm cho JavaScript trở nên an toàn hơn, bằng cách hạn chế quyền truy cập vào đối tượng chung thông qua this. Ở chế độ nghiêm ngặt, this không được đóng hộp (buộc phải trở thành một đối tượng), nghĩa là nếu không được chỉ định, nó sẽ là eval2 thay vì đối tượng chung

Những thay đổi khác

Chế độ nghiêm ngặt thực hiện một vài thay đổi ít được đề cập hơn. Bao gồm các

  • eval3 bị cấm, dẫn đến lỗi nếu sử dụng
  • eval4 và eval5 là các thuộc tính không thể xóa sẽ ném khi được đặt hoặc truy xuất
  • eval6, eval7, eval8, eval9, eval0, eval1, eval2, eval3, và eval4 là các từ khóa dành riêng
  • Các câu lệnh chức năng chỉ được phép ở cấp cao nhất của tập lệnh chức năng

Hơn như thế này

  • Tạo một hàm gọi eval5 với một ngữ cảnh nhất định, tùy ý thêm bất kỳ tham số được cung cấp bổ sung nào vào các đối số

    Chế độ nghiêm ngặt có cần thiết trong JavaScript không?

    Chế độ nghiêm ngặt là một phần quan trọng của JavaScript hiện đại . Đây là chế độ cho phép chúng tôi chọn tham gia vào cú pháp JavaScript bị hạn chế hơn. Ngữ nghĩa của chế độ nghiêm ngặt khác với "chế độ cẩu thả" cũ của JavaScript có cú pháp lỏng lẻo hơn và tạo ra các lỗi trong mã bị tắt tiếng.

    Chúng ta nên sử dụng nghiêm ngặt ở đâu trong JavaScript?

    Bật chế độ nghiêm ngặt cục bộ bằng cách thêm chuỗi "sử dụng nghiêm ngặt" làm câu lệnh đầu tiên bên trong một hàm. Sử dụng chế độ nghiêm ngặt cục bộ bên trong hàm sẽ chỉ thực thi phân tích cú pháp chặt chẽ hơn trong ngữ cảnh của hàm đó. Điều quan trọng cần lưu ý là các mô-đun JavaScript ở chế độ nghiêm ngặt theo mặc định

    Việc sử dụng nghiêm ngặt có còn cần thiết không?

    Việc sử dụng có cần thiết nghiêm ngặt không? . The strict mode is no longer required since the release of ES2015, which fixes most of JavaScript's confusing behavior with a more robust syntax.