Hướng dẫn how do you check whether a variable is a function javascript? - làm cách nào để kiểm tra xem một biến có phải là một hàm javascript không?
Đối với những người quan tâm đến phong cách chức năng hoặc tìm kiếm cách tiếp cận biểu cảm hơn để sử dụng trong lập trình meta (chẳng hạn như kiểm tra loại), có thể rất thú vị khi thấy thư viện Ramda để hoàn thành nhiệm vụ đó. Show Mã tiếp theo chỉ chứa các hàm thuần túy và pointfree:
Kể từ ES2017, các chức năng 1 có sẵn, vì vậy chúng tôi cũng có thể kiểm tra chúng:
Và sau đó kết hợp chúng với nhau:
Tất nhiên, chức năng nên được bảo vệ chống lại các giá trị 2 và 3, vì vậy để làm cho nó "an toàn":
Và, hoàn thành đoạn trích để tổng hợp:
Tuy nhiên, lưu ý giải pháp này có thể hiển thị ít hiệu suất hơn các tùy chọn có sẵn khác do sử dụng rộng rãi các chức năng bậc cao. Hàm JavaScript là một khối mã được thiết kế để thực hiện một nhiệm vụ cụ thể. Nó được thực hiện khi nó được gọi (khi một cái gì đó gọi nó). Một chức năng có thể là một chức năng có tên hoặc một ẩn danh. Bài viết này nói về cách kiểm tra xem một biến có thuộc loại 'chức năng' hay không. Trước khi chúng tôi hiểu các phương pháp khác nhau để thực hiện điều này và tại sao bất cứ ai cũng muốn gán một hàm cho một biến, hãy xem xét cách các hàm được đặt tên và ẩn danh được khai báo. Mục lục
Các loại khai báo chức năngLợi thế của việc gán một hàm cho một biếnMã số
Được đặt tên là khai báo chức năngHàm này có một định danh được đặt tên được liên kết với nó có thể được sử dụng để gọi hàm
Lợi thế của việc gán một hàm cho một biếnMã số
Mã sốSử dụng toán tử InstanceOfToán tử InstanceOf được sử dụng để kiểm tra loại đối tượng tại thời điểm chạy. Toán tử này trả về một giá trị boolean (đúng hoặc sai). Trong ví dụ dưới đây, câu lệnh IF được sử dụng để kiểm tra xem loại tham số được truyền cho CheckFunction () có thuộc loại chức năng hay không.
Sử dụng so sánh bình đẳng nghiêm ngặt (===) cùng với toán tử loạiTrong JavaScript, toán tử so sánh bình đẳng nghiêm ngặt (===) được sử dụng để kiểm tra xem hai thực thể không chỉ có giá trị bằng nhau mà còn loại bằng nhau. Toán tử typeOf trả về một chuỗi cho biết loại của toán hạng không được đánh giá. Cả hai nhà khai thác này cung cấp một kết quả boolean. Kết quả này có thể được so sánh bằng cách sử dụng câu lệnh IF để kiểm tra xem loại đối tượng có phải là "hàm 'không.
Sử dụng object.prototype.toStringPhương pháp này sử dụng object.prototype.toString. Mỗi đối tượng đều có một phương thức toString (), trả về ‘[loại đối tượng], trong đó‘ loại là loại đối tượng. Một câu lệnh IF có thể được sử dụng để so sánh nếu giá trị trả về là loại 'hàm'. 0Hãy cẩn thậnTrong loại chrome (obj) === 'hàm' dường như là nhanh nhất; Tuy nhiên, trong chức năng InstanceOf của Firefox OBJ được thực hiện tương đối tốt hơn. |