Kiểm tra xem một hàm được xác định trong JavaScript #
Sử dụng toán tử Copied!typeof
để kiểm tra xem hàm có được xác định không, ví dụ: typeof myFunction === 'function'
. Toán tử typeof
trả về một chuỗi cho biết loại giá trị. Nếu hàm không được xác định, toán tử typeof
trả về
0 và không gây ra lỗi.console.log[typeof [[] => {}]]; // 👉️ "function"
console.log[typeof function [] {}]; // 👉️ "function"
console.log[typeof null]; // 👉️ "object"
console.log[typeof []]; // 👉️ "object"
console.log[typeof {}]; // 👉️ "object"
console.log[typeof '']; // 👉️ "string"
console.log[typeof 0]; // 👉️ "number"
Copied!
if [typeof myFunction === 'function'] { console.log['✅ function is defined']; } else { // 👇️ this runs console.log['⛔️ function is NOT defined']; }
Chúng tôi đã sử dụng toán tử loại để kiểm tra xem một hàm được xác định.
Toán tử trả về một chuỗi cho biết loại giá trị. Dưới đây là một số ví dụ:
Copied!
console.log[typeof [[] => {}]]; // 👉️ "function" console.log[typeof function [] {}]; // 👉️ "function" console.log[typeof null]; // 👉️ "object" console.log[typeof []]; // 👉️ "object" console.log[typeof {}]; // 👉️ "object" console.log[typeof '']; // 👉️ "string" console.log[typeof 0]; // 👉️ "number"
Toán tử typeof
không gây ra lỗi khi được sử dụng với một biến không được khai báo, thay vào đó, nó trả về chuỗi ____10.
Copied!
console.log[typeof doesNotExist]; // 👉️ "undefined"
Tuy nhiên, nếu bạn sử dụng toán tử typeof
trước khi khai báo một biến với các từ khóa
4 hoặcCopied!
console.log[typeof [[] => {}]]; // 👉️ "function" console.log[typeof function [] {}]; // 👉️ "function" console.log[typeof null]; // 👉️ "object" console.log[typeof []]; // 👉️ "object" console.log[typeof {}]; // 👉️ "object" console.log[typeof '']; // 👉️ "string" console.log[typeof 0]; // 👉️ "number"
5, bạn sẽ gặp lỗi.Copied!
console.log[typeof [[] => {}]]; // 👉️ "function" console.log[typeof function [] {}]; // 👉️ "function" console.log[typeof null]; // 👉️ "object" console.log[typeof []]; // 👉️ "object" console.log[typeof {}]; // 👉️ "object" console.log[typeof '']; // 👉️ "string" console.log[typeof 0]; // 👉️ "number"
Copied!
// ❌ Error: Cannot access 'myFunction' before initialization if [typeof myFunction === 'function'] { console.log['✅ function is defined']; } else { console.log['⛔️ function is NOT defined']; } const myFunction = [] => {};
Chúng tôi đã sử dụng toán tử typeof
trước khi khởi tạo chức năng bằng từ khóa
5.Copied!
console.log[typeof [[] => {}]]; // 👉️ "function" console.log[typeof function [] {}]; // 👉️ "function" console.log[typeof null]; // 👉️ "object" console.log[typeof []]; // 👉️ "object" console.log[typeof {}]; // 👉️ "object" console.log[typeof '']; // 👉️ "string" console.log[typeof 0]; // 👉️ "number"
Điều này trả về một lỗi bởi vì, chúng tôi đang cố gắng truy cập một biến tồn tại trong chương trình, nhưng chưa được khai báo.
Chúng tôi sẽ nhận được kết quả tương tự nếu chúng tôi khai báo chức năng bằng từ khóa
4.Copied!
console.log[typeof [[] => {}]]; // 👉️ "function" console.log[typeof function [] {}]; // 👉️ "function" console.log[typeof null]; // 👉️ "object" console.log[typeof []]; // 👉️ "object" console.log[typeof {}]; // 👉️ "object" console.log[typeof '']; // 👉️ "string" console.log[typeof 0]; // 👉️ "number"
Tuy nhiên, nếu chúng tôi sử dụng từ khóa
9, chúng tôi sẽ không gặp lỗi vì cách thức hoạt động trong JavaScript.Copied!
console.log[typeof [[] => {}]]; // 👉️ "function" console.log[typeof function [] {}]; // 👉️ "function" console.log[typeof null]; // 👉️ "object" console.log[typeof []]; // 👉️ "object" console.log[typeof {}]; // 👉️ "object" console.log[typeof '']; // 👉️ "string" console.log[typeof 0]; // 👉️ "number"
Copied!
if [typeof myFunction === 'function'] { console.log['✅ function is defined']; } else { // 👇️ This runs console.log['⛔️ function is NOT defined']; } var myFunction = [] => {};
Chúng tôi đã khai báo chức năng bằng cách sử dụng từ khóa
9, vì vậy chúng tôi không gặp lỗi khi sử dụng toán tửCopied!
console.log[typeof [[] => {}]]; // 👉️ "function" console.log[typeof function [] {}]; // 👉️ "function" console.log[typeof null]; // 👉️ "object" console.log[typeof []]; // 👉️ "object" console.log[typeof {}]; // 👉️ "object" console.log[typeof '']; // 👉️ "string" console.log[typeof 0]; // 👉️ "number"
typeof
, tuy nhiên khối 2 đã chạy.Copied!
console.log[typeof doesNotExist]; // 👉️ "undefined"
Đây là những gì xảy ra dưới mui xe khi sử dụng từ khóa
9.Copied!
console.log[typeof [[] => {}]]; // 👉️ "function" console.log[typeof function [] {}]; // 👉️ "function" console.log[typeof null]; // 👉️ "object" console.log[typeof []]; // 👉️ "object" console.log[typeof {}]; // 👉️ "object" console.log[typeof '']; // 👉️ "string" console.log[typeof 0]; // 👉️ "number"
Copied!
var myFunction; if [typeof myFunction === 'function'] { console.log['✅ function is defined']; } else { // 👇️ This runs console.log['⛔️ function is NOT defined']; } myFunction = [] => {};
Tuyên bố của biến được nâng lên trên cùng, tuy nhiên việc gán giá trị vẫn là nơi nó có.
Đây là lý do tại sao chúng tôi không gặp lỗi, nhưng cũng có biến không có loại
4.Copied!
console.log[typeof doesNotExist]; // 👉️ "undefined"
Rất hiếm khi bạn sẽ viết hoặc đọc mã như thế này, tuy nhiên thật tốt khi có sự hiểu biết về các khái niệm cơ bản này.
Đọc thêm #
- Kiểm tra xem tham số có được cung cấp cho chức năng trong JavaScript không
- Kiểm tra xem biến có loại chức năng bằng cách sử dụng javascript không