Có một số cách khác nhau để gọi một chức năng mà không có dấu ngoặc đơn. Show
Giả sử bạn có chức năng này được xác định:
Sau đó, ở đây bằng một số cách để gọi 1 mà không có dấu ngoặc đơn:1. Là hàm tạoVới 2, bạn có thể gọi một chức năng mà không có dấu ngoặc đơn:
Từ MDN trên bộ lọc 2:
2. Như new constructor[([arguments])] 4 hoặc new constructor[([arguments])] 5 thực hiện 4 và 5 là các phương pháp đặc biệt: chúng được gọi là ngầm khi cần chuyển đổi:
Bạn có thể (AB) sử dụng mẫu này để gọi 1 mà không cần dấu ngoặc đơn:
Hoặc với 5:
5 và 4 trên thực tế được gọi từ phương thức toprimitive (kể từ ES6), và do đó bạn cũng có thể thực hiện phương pháp đó:
2.B ghi đè new constructor[([arguments])] 5 trong nguyên mẫu chức năngBạn có thể lấy ý tưởng trước đó để ghi đè phương thức 5 trên nguyên mẫu 4:
Một khi bạn đã làm điều đó, bạn có thể viết:
Và mặc dù có dấu ngoặc đơn liên quan đến dòng, việc gọi kích hoạt thực tế không có dấu ngoặc đơn. Xem thêm về điều này trong blog "Phương thức gọi trong JavaScript, mà không thực sự gọi chúng" 3. Là máy phát điệnBạn có thể xác định hàm máy phát (với 5), trả về một trình lặp. Bạn có thể gọi nó bằng cú pháp lan truyền hoặc với cú pháp 6.Đầu tiên chúng ta cần một biến thể trình tạo của hàm 1 gốc:
Và sau đó chúng tôi gọi nó mà không có dấu ngoặc đơn bằng cách xác định phương thức @@ iterator: 0Thông thường các trình tạo sẽ có từ khóa 8 ở đâu đó, nhưng không cần thiết để chức năng được gọi.Câu lệnh cuối cùng gọi hàm, nhưng điều đó cũng có thể được thực hiện với sự phá hủy: 1hoặc cấu trúc 9, nhưng nó có dấu ngoặc đơn của riêng mình: 2Lưu ý rằng bạn cũng có thể thực hiện các điều trên với chức năng 1 ban đầu, nhưng nó sẽ kích hoạt một ngoại lệ trong quy trình, sau khi 1 đã được thực thi (thử nghiệm trên FF và Chrome). Bạn có thể quản lý ngoại lệ với khối 2.4. Là getter@Jehna1 có một câu trả lời đầy đủ về điều này, vì vậy hãy cho anh ta tín dụng. Dưới đây là một cách để gọi một dấu ngoặc đơn hàm trên phạm vi toàn cầu, tránh phương pháp 3 không dùng nữa. Nó sử dụng 4 thay thế.Chúng ta cần tạo một biến thể của hàm 1 ban đầu cho điều này: 3Và sau đó: 4Thay thế 6 bằng bất kỳ đối tượng toàn cầu nào của bạn.Bạn có thể gọi hàm 1 ban đầu mà không để lại dấu vết trên đối tượng toàn cầu như sau: 5Nhưng người ta có thể lập luận rằng chúng ta có dấu ngoặc đơn ở đây (mặc dù chúng không liên quan đến việc gọi thực tế). 5. Chức năng thẻVì ES6, bạn có thể gọi một hàm chuyển nó một mẫu theo nghĩa đen với cú pháp này: 6Xem "Tagged Memlate Lingerals". 6. Là người xử lý proxyKể từ ES6, bạn có thể xác định proxy: 7Và sau đó đọc bất kỳ giá trị tài sản nào sẽ được gọi 1: 8Có nhiều biến thể của điều này. Một ví dụ nữa: 97. Như trình kiểm tra ví dụToán tử 9 thực thi phương thức 0 trên toán hạng thứ hai, khi được xác định: 0
Bạn có thể gọi một chức năng mà không có dấu ngoặc đơn?Khi chúng ta gọi một chức năng với dấu ngoặc đơn, chức năng sẽ được thực thi và trả về kết quả cho người được gọi. Trong một trường hợp khác, khi chúng ta gọi một hàm không có dấu ngoặc đơn, một tham chiếu chức năng sẽ được gửi đến gọi có thể gọi thay vì thực hiện chính chức năng.a function reference is sent to the callable rather than executing the function itself.
Bạn có thể gọi một chức năng mà không có dấu ngoặc đơn JavaScript không?Gọi hàm JavaScript mà không có Parens chuyển định nghĩa của hàm đó làm tài liệu tham khảo.Đây là một trong những nguyên tắc cơ bản để lập trình trong JavaScript được gọi là gọi lại.. It is one of the fundamentals to programming in JavaScript known as callbacks.
Sự khác biệt giữa chức năng gọi với dấu ngoặc đơn và không có trong JavaScript là gì?Với dấu ngoặc đơn, phương pháp được gọi vì dấu ngoặc đơn, kết quả của việc gọi đó sẽ được lưu trữ trong trước_add.Không có dấu ngoặc đơn, bạn lưu trữ một tham chiếu (hoặc "con trỏ" nếu bạn sẽ) đến hàm trong biến.
Phương pháp nào không yêu cầu sử dụng dấu ngoặc đơn trong JavaScript?Phương pháp 1: Sử dụng toán tử mới: Toán tử mới được sử dụng để tạo một thể hiện của một đối tượng có hàm tạo hàm.Chức năng xây dựng này có thể được sử dụng để viết chức năng của riêng chúng tôi và sau đó được gọi bởi toán tử mới.Using the new operator: The new operator is used to create an instance of an object which has a constructor function. This constructor function can be used to write our own function and then be invoked by the new operator. |