Hướng dẫn JS

JS TRANG CHỦ Giới thiệu JS JS Đến đâu Đầu ra JS Tuyên bố JS Cú pháp JS Bình luận JS Biến JS JS Hãy JS Const Toán tử JS Số học JS Chuyển nhượng JS Các loại dữ liệu JS Các hàm JS Đối tượng JS Sự kiện JS Chuỗi JS Phương thức chuỗi JS Tìm kiếm chuỗi JS Mẫu chuỗi JS Số JS Phương thức số JS Mảng JS Phương thức mảng JS Sắp xếp mảng JS Lặp lại mảng JS JS Array Const JS ngày Định dạng ngày JS Ngày lấy phương thức JS Phương pháp đặt ngày JS Toán JS JS ngẫu nhiên JS Booleans So sánh JS Điều kiện JS Chuyển đổi JS JS Loop cho JS Loop For In JS Loop For Of JS lặp trong khi JS Break JS lặp lại Bộ JS Bản đồ JS JS Typeof Chuyển đổi loại JS JS Bitwise JS RegExp Lỗi JS Phạm vi JS JS Hoists Chế độ nghiêm ngặt JS JS từ khóa này Hàm mũi tên JS Lớp JS JS JSON Gỡ lỗi JS Hướng dẫn kiểu JS Các phương pháp hay nhất về JS JS sai lầm Hiệu suất JS JS dành riêng từ

Phiên bản JS

Phiên bản JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge Lịch sử JS

Đối tượng JS

Định nghĩa đối tượng Thuộc tính đối tượng Phương thức đối tượng Hiển thị đối tượng Người truy cập đối tượng Trình tạo đối tượng Nguyên mẫu đối tượng Đối tượng lặp lại Bộ đối tượng Bản đồ đối tượng Tham chiếu đối tượng

Các hàm JS

Định nghĩa hàm Tham số chức năng Lời mời hàm Gọi hàm Áp dụng chức năng Chức năng đóng cửa

Lớp JS

Giới thiệu Lớp học Kế thừa giai cấp Lớp tĩnh

JS Async

Gọi lại JS JS không đồng bộ JS hứa JS Async / Await

JS HTML DOM

Giới thiệu DOM Phương thức DOM Tài liệu DOM Phần tử DOM DOM HTML Các biểu mẫu DOM DOM CSS Hoạt ảnh DOM Sự kiện DOM Trình xử lý sự kiện DOM Điều hướng DOM Nút DOM Bộ sưu tập DOM Danh sách nút DOM

BOM trình duyệt JS

Cửa sổ JS Màn hình JS Vị trí JS Lịch sử JS JS Navigator JS Popup Alert Thời gian JS JS Cookies

API web JS

Giới thiệu API Web API biểu mẫu web API lịch sử web API lưu trữ web API công nhân web API tìm nạp web API vị trí địa lý web

JS AJAX

Giới thiệu về AJAX AJAX XMLHttp Yêu cầu AJAX Phản hồi AJAX Tệp XML AJAX AJAX PHP AJAX ASP Cơ sở dữ liệu AJAX Ứng dụng AJAX Ví dụ về AJAX

JS JSON

Giới thiệu JSON Cú pháp JSON JSON so với XML Các loại dữ liệu JSON Phân tích cú pháp JSON JSON Stringify Đối tượng JSON Mảng JSON Máy chủ JSON JSON PHP HTML JSON JSON JSONP

JS so với jQuery

Bộ chọn jQuery jQuery HTML jQuery CSS jQuery DOM

Đồ họa JS

Đồ họa JS JS Canvas JS Plotly JS Chart.js JS Google Chart JS D3.js

Ví dụ về JS

Ví dụ về JS JS HTML DOM Đầu vào HTML JS Đối tượng HTML JS Sự kiện HTML JS Trình duyệt JS Trình chỉnh sửa JS Bài tập JS JS Quiz Chứng chỉ JS

Tham khảo JS

Đối tượng JavaScript Đối tượng DOM HTML


Sử dụng JavaScript nghiêm ngặt


"use strict";Xác định rằng mã JavaScript phải được thực thi ở "chế độ nghiêm ngặt".


Chỉ thị "sử dụng nghiêm ngặt"

Chỉ "use strict"thị mới trong ECMAScript phiên bản 5.

Nó không phải là một câu lệnh, mà là một biểu thức theo nghĩa đen, bị các phiên bản JavaScript trước đó bỏ qua.

Mục đích của "use strict"là để chỉ ra rằng mã phải được thực thi ở "chế độ nghiêm ngặt".

Ví dụ: với chế độ nghiêm ngặt, bạn không thể sử dụng các biến chưa được khai báo.

Tất cả các trình duyệt hiện đại đều hỗ trợ "sử dụng nghiêm ngặt" ngoại trừ Internet Explorer 9 trở xuống:

Directive
"use strict" 13.0 10.0 4.0 6.0 12.1

Các số trong bảng chỉ định phiên bản trình duyệt đầu tiên hỗ trợ đầy đủ lệnh.

Bạn có thể sử dụng chế độ nghiêm ngặt trong tất cả các chương trình của mình. Nó giúp bạn viết mã rõ ràng hơn, chẳng hạn như ngăn bạn sử dụng các biến chưa được khai báo.

"use strict" chỉ là một chuỗi, vì vậy IE 9 sẽ không báo lỗi ngay cả khi nó không hiểu nó.


Tuyên bố chế độ nghiêm ngặt

Chế độ nghiêm ngặt được khai báo bằng cách thêm "sử dụng nghiêm ngặt"; ở phần đầu của một tập lệnh hoặc một hàm.

Được khai báo ở đầu tập lệnh, nó có phạm vi toàn cầu (tất cả mã trong tập lệnh sẽ thực thi ở chế độ nghiêm ngặt):

Thí dụ

"use strict";
x = 3.14;       // This will cause an error because x is not declared

Thí dụ

"use strict";
myFunction();

function myFunction() {
  y = 3.14;   // This will also cause an error because y is not declared
}

Được khai báo bên trong một hàm, nó có phạm vi cục bộ (chỉ mã bên trong hàm ở chế độ nghiêm ngặt):

x = 3.14;       // This will not cause an error.
myFunction();

function myFunction() {
  "use strict";
  y = 3.14;   // This will cause an error
}


Việc "sử dụng nghiêm ngặt"; Cú pháp

Cú pháp, để khai báo chế độ nghiêm ngặt, được thiết kế để tương thích với các phiên bản JavaScript cũ hơn.

Việc biên dịch một ký tự số (4 + 5;) hoặc một ký tự chuỗi ("John Doe";) trong một chương trình JavaScript không có tác dụng phụ. Nó chỉ đơn giản là biên dịch thành một biến không tồn tại và chết.

Vì vậy, "use strict";chỉ quan trọng đối với các trình biên dịch mới "hiểu" ý nghĩa của nó.


Tại sao Chế độ nghiêm ngặt?

Chế độ nghiêm ngặt giúp viết JavaScript "an toàn" dễ dàng hơn.

Chế độ nghiêm ngặt thay đổi "cú pháp xấu" được chấp nhận trước đây thành lỗi thực sự.

Ví dụ: trong JavaScript thông thường, việc gõ nhầm tên biến sẽ tạo ra một biến toàn cục mới. Trong chế độ nghiêm ngặt, điều này sẽ tạo ra một lỗi, khiến bạn không thể vô tình tạo một biến toàn cục.

Trong JavaScript thông thường, nhà phát triển sẽ không nhận được bất kỳ phản hồi lỗi nào khi gán giá trị cho các thuộc tính không thể ghi.

Ở chế độ nghiêm ngặt, bất kỳ phép gán nào cho thuộc tính không thể ghi, thuộc tính chỉ getter, thuộc tính không tồn tại, biến không tồn tại hoặc đối tượng không tồn tại, sẽ gây ra lỗi.


Không được phép ở Chế độ nghiêm ngặt

Không được phép sử dụng một biến mà không khai báo nó:

"use strict";
x = 3.14;                // This will cause an error

Đối tượng cũng là biến.

Không được phép sử dụng một đối tượng mà không khai báo nó:

"use strict";
x = {p1:10, p2:20};      // This will cause an error

Không được phép xóa một biến (hoặc đối tượng).

"use strict";
let x = 3.14;
delete x;                // This will cause an error

Không được phép xóa một chức năng.

"use strict";
function x(p1, p2) {};
delete x;                // This will cause an error 

Không được phép sao chép tên thông số:

"use strict";
function x(p1, p1) {};   // This will cause an error

Các ký tự số bát phân không được phép:

"use strict";
let x = 010;             // This will cause an error

Các ký tự thoát bát phân không được phép:

"use strict";
let x = "\010";            // This will cause an error

Không được phép ghi vào thuộc tính chỉ đọc:

"use strict";
const obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});

obj.x = 3.14;            // This will cause an error

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

"use strict";
const obj = {get x() {return 0} };

obj.x = 3.14;            // This will cause an error

Không được phép xóa thuộc tính không thể xóa:

"use strict";
delete Object.prototype; // This will cause an error

Từ evalnày không thể được sử dụng như một biến:

"use strict";
let eval = 3.14;         // This will cause an error

Từ argumentsnày không thể được sử dụng như một biến:

"use strict";
let arguments = 3.14;    // This will cause an error

Câu withlệnh không được phép:

"use strict";
with (Math){x = cos(2)}; // This will cause an error

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 là:

"use strict";
eval ("let x = 2");
alert (x);             // This will cause an error

Từ thiskhóa trong các hàm hoạt động khác nhau ở chế độ nghiêm ngặt.

Từ thiskhóa đề cập đến đối tượng được gọi là hàm.

Nếu đối tượng không được chỉ định, các hàm ở chế độ nghiêm ngặt sẽ trả về undefinedvà các hàm ở chế độ bình thường sẽ trả về đối tượng toàn cục (cửa sổ):

"use strict";
function myFunction() {
  alert(this); // will alert "undefined"
}
myFunction();


Bằng chứng tương lai!

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 làm tên biến ở chế độ nghiêm ngặt.

Đó là:

  • dụng cụ
  • giao diện
  • cho phép
  • Bưu kiện
  • riêng
  • được bảo vệ
  • công cộng
  • tĩnh
  • năng suất
"use strict";
let public = 1500;      // This will cause an error

Coi chừng!

Chỉ thị "sử dụng nghiêm ngặt" chỉ được nhận dạng ở phần đầu của một tập lệnh hoặc một hàm.