Hướng dẫn nodejs assign function to variable - nodejs gán chức năng cho biến
Lỗi đầu tiên bạn đã gây ra là 9 chưa trả lại bất cứ điều gì. Không có tuyên bố 0 có trong hàm, vì vậy 1 sẽ luôn dẫn đến 2 không được xác định. Chức năng là các biến hạng nhấtCác chức năng có thể được sử dụng giống như các biến có thể, và được truyền vòng như các đối số cho các chức năng. Đây là một tính năng mạnh mẽ của JavaScript và một cái gì đó mà bạn sẽ cần phải sử dụng các cuộc gọi lại. Hãy nghĩ về một chức năng như một hành động xác định và bạn chỉ cần thông qua hành động đó xung quanh. Ngoài ra, các cuộc gọi lại nên được sử dụng để đối phó với việc hoàn thành một quá trình. Vì vậy, ý tưởng là, bạn biết những gì có nghĩa là xảy ra sau quá trình A, và những gì nó có nghĩa là để tạo, vì vậy bạn có thể đưa ra quy trình một cuộc gọi lại sẽ được gọi là một lần đã chấm dứt. Bây giờ kịch bản ở đây không phù hợp cho tình huống gọi lại. Nó sẽ dễ dàng hơn nhiều để bạn làm ...
Và sau đó lấy băm của bạn bằng cách gọi chức năng này, như vậy ...
Bạn cũng muốn nhận thức được phạm vi biến JavaScripts, vì bạn đang thiếu từ khóa VAR khi tham khảo 3 trong hàm 9 có nghĩa là gán mặc định cho phạm vi toàn cầu. Có lẽ là những gì chịu trách nhiệm khiến bạn nhầm lẫn, vì nhiệm vụ của bạn là 3 trong 9 sẽ là toàn cầu và do đó đây.Giả sử cuối cùng bạn sẽ yêu cầu xử lý không đồng bộ
Bạn nên chuyển các biến của bạn dưới dạng đối số cho cuộc gọi lại. Điều đó sẽ giải quyết các vấn đề phạm vi của bạn hy vọng. Ngoài ra, lưu ý nhỏ, các chức năng trong JavaScript thường nên là chữ thường nếu chúng không được sử dụng với câu lệnh 9 (nghĩa là lớp JavaScript). Hàm là một khối thông số của mã được xác định một lần và được gọi nhiều lần sau đó. Trong JavaScript, một hàm được sáng tác và bị ảnh hưởng bởi nhiều thành phần:function is a parametric block of code defined once and called multiple times later. In JavaScript a function is composed and influenced by many components:
Bài đăng này dạy cho bạn sáu cách tiếp cận để tuyên bố các chức năng JavaScript: cú pháp, ví dụ và cạm bẫy phổ biến. Hơn nữa, bạn sẽ hiểu khi nào nên sử dụng một loại chức năng cụ thể trong một số trường hợp nhất định. Mục lục
1. Tuyên bố chức năng
1.2 Sự khác biệt so với biểu thức chức năng
1.3 Tuyên bố chức năng trong điều kiện 2. Biểu thức chức năngcreates a variable in the current scope with the identifier equal to the function name. This variable holds the function object. 2.1 Biểu thức chức năng được đặt tênhoisted up to the top of the current scope, which means that the function can be invoked before the declaration (see this chapter for more details). 2.2 Lợi thích biểu thức chức năng được đặt tênnamed, which means that the 7 property of the function object holds its name. It is useful when viewing the call stack: in debugging or error messages reading. Hãy xem các thuộc tính này trong một ví dụ:
Tuyên bố chức năng 8 tạo ra một biến 9 được nâng lên trên cùng của phạm vi hiện tại. 9 Biến giữ đối tượng chức năng và 1 chứa tên hàm: 2. 1.1 Một chức năng thông thườngTuyên bố chức năng khớp với các trường hợp khi cần một hàm thông thường. Thường xuyên có nghĩa là bạn tuyên bố chức năng một lần và sau đó gọi nó ở nhiều nơi khác nhau. Đây là kịch bản cơ bản:
Bởi vì khai báo chức năng tạo ra một biến trong phạm vi hiện tại, bên cạnh các cuộc gọi chức năng chính quy, nó rất hữu ích cho các trình nghe sự kiện đệ quy hoặc tách ra. Trái ngược với các biểu thức chức năng hoặc các hàm mũi tên, không tạo ra một ràng buộc với biến hàm theo tên của nó. Ví dụ, để tính toán đệ quy, bạn phải truy cập chức năng bên trong:
Bên trong 3 Một cuộc gọi đệ quy đang được thực hiện bằng cách sử dụng biến chứa hàm: 4. Có thể sử dụng một biểu thức chức năng và gán nó cho một biến thông thường, ví dụ: 5. Nhưng khai báo chức năng 6 là nhỏ gọn (không cần 7 và 8). Một thuộc tính quan trọng của tuyên bố chức năng là cơ chế nâng cao của nó. Nó cho phép sử dụng chức năng trước khi khai báo trong cùng một phạm vi. Tăng cường là hữu ích trong một số tình huống. Ví dụ: khi bạn muốn xem chức năng được gọi như thế nào khi bắt đầu tập lệnh, mà không cần đọc quá trình thực hiện chức năng. Việc triển khai chức năng có thể được đặt bên dưới trong tệp, vì vậy bạn thậm chí có thể không cuộn ở đó. Bạn có thể đọc thêm chi tiết về Tuyên bố chức năng nâng cao ở đây. 1.2 Sự khác biệt so với biểu thức chức năngThật dễ dàng để nhầm lẫn các khai báo chức năng và biểu thức chức năng. Chúng trông rất giống nhau nhưng tạo ra các chức năng với các thuộc tính khác nhau. Một quy tắc dễ nhớ: Tuyên bố chức năng trong một câu lệnh luôn bắt đầu với từ khóa 2. Nếu không, đó là một biểu thức chức năng (xem 2.).starts with the keyword 2. Otherwise it's a function expression (see 2.). Mẫu sau đây là một khai báo chức năng trong đó câu lệnh bắt đầu bằng từ khóa 2:starts with 2 keyword:
Trong trường hợp biểu thức chức năng, câu lệnh JavaScript không bắt đầu với từ khóa 2 (nó có mặt ở đâu đó ở giữa mã câu lệnh):does not start with 2 keyword (it is present somewhere in the middle of the statement code):
1.3 Tuyên bố chức năng trong điều kiệnMột số môi trường JavaScript có thể ném lỗi tham chiếu khi gọi hàm có khai báo xuất hiện trong các khối 4 của các câu lệnh 3, 4 hoặc 5. Chúng ta hãy kích hoạt chế độ nghiêm ngặt và xem điều gì xảy ra khi một hàm được khai báo trong một điều kiện: Let's enable the strict mode and see what happens when a function is declared in a conditional:
Khi gọi 6, JavaScript ném 7, vì khai báo hàm nằm trong một khối có điều kiện. Tuyên bố chức năng trong các điều kiện được cho phép ở chế độ không nghiêm ngặt, điều này khiến nó còn khó hiểu hơn. Theo nguyên tắc chung cho các tình huống này, khi một hàm nên được tạo bởi các điều kiện - sử dụng biểu thức chức năng. Hãy xem làm thế nào nó có thể: 0Bởi vì hàm là một đối tượng thông thường, gán nó cho một biến tùy thuộc vào điều kiện. Gọi 6 hoạt động tốt, không có lỗi. 2. Biểu thức chức năng
Một số mẫu của biểu thức chức năng: 1Biểu thức chức năng tạo ra một đối tượng hàm có thể được sử dụng trong các tình huống khác nhau:
Biểu thức chức năng là con ngựa làm việc trong JavaScript. Thông thường, bạn đối phó với loại khai báo chức năng này, cùng với hàm mũi tên (nếu bạn thích cú pháp ngắn và bối cảnh từ vựng). 2.1 Biểu thức chức năng được đặt tênMột hàm ẩn danh khi nó không có tên (thuộc tính 7 là một chuỗi trống 6): 2Đây là một hàm ẩn danh, tên là một chuỗi trống. Đôi khi tên chức năng có thể được suy ra. Ví dụ: khi ẩn danh được gán cho một biến: 3Tên hàm ẩn danh là 7, vì tên biến 8 được sử dụng để suy ra tên hàm. Khi biểu thức có tên được chỉ định, đây là một biểu thức chức năng được đặt tên. Nó có một số thuộc tính bổ sung so với biểu thức chức năng đơn giản:named function expression. It has some additional properties compared to simple function expression:
Hãy sử dụng ví dụ trên, nhưng đặt tên trong biểu thức chức năng: 40 là một biểu thức chức năng được đặt tên. Biến 1 có thể truy cập trong phạm vi chức năng, nhưng không phải bên ngoài. Dù bằng cách nào, thuộc tính 7 của đối tượng hàm giữ tên: 1. 2.2 Lợi thích biểu thức chức năng được đặt tênKhi một biểu thức hàm 4 được gán cho một biến, một số công cụ suy ra tên hàm từ biến này. Tuy nhiên, các cuộc gọi lại có thể được truyền dưới dạng các biểu thức hàm ẩn danh, mà không lưu trữ thành các biến: vì vậy động cơ không thể xác định tên của nó. Thật hợp lý khi ủng hộ các chức năng được đặt tên và tránh các chức năng ẩn danh để đạt được lợi ích như:
3. Định nghĩa phương pháp tốc ký
Ví dụ sau sử dụng định nghĩa phương thức tốc ký trong một đối tượng theo nghĩa đen: 5Các phương thức 7 và 8 trong đối tượng 9 được xác định bằng định nghĩa phương thức ngắn. Các phương pháp này được gọi như thường lệ: 0 và 1. Cách tiếp cận ngắn của định nghĩa phương pháp có một số lợi ích so với định nghĩa tài sản truyền thống với tên, đại tràng 2 và biểu thức chức năng 3:
Cú pháp 4 yêu cầu khai báo phương thức ở dạng ngắn: 63.1 Tên và phương thức tính toán được tính toánEcmascript 2015 thêm một tính năng hay: Tên thuộc tính được tính toán trong các loại và các lớp đối tượng. Các thuộc tính được tính toán sử dụng một cú pháp nhỏ khác 5, do đó, định nghĩa phương thức trông theo cách này: The computed properties use a slight different syntax 5, so the method definition looks this way: 76 và 7 là các khai báo phương thức tốc ký với tên thuộc tính được tính toán. 4. Hàm mũi tên
Khi hàm mũi tên chỉ có một tham số, cặp dấu ngoặc đơn có thể được bỏ qua. Khi nó chứa một câu lệnh duy nhất, niềng răng xoăn cũng có thể được bỏ qua. Hãy xem hàm mũi tên sử dụng cơ bản: 8 01 là một hàm mũi tên tính toán giá trị tuyệt đối của một số.Hàm được khai báo bằng cách sử dụng mũi tên chất béo có các thuộc tính sau:
4.1 Tính minh bạch bối cảnh0 Từ khóa là một khía cạnh khó hiểu của JavaScript (kiểm tra bài viết này để biết giải thích chi tiết về 0). Bởi vì các chức năng tạo ra bối cảnh thực thi riêng, thường rất khó để phát hiện giá trị 0. Because functions create own execution context, often it is difficult to detect 0 value. ECMAScript 2015 cải thiện việc sử dụng 0 bằng cách giới thiệu hàm mũi tên, lấy ngữ cảnh từ vựng (hoặc đơn giản là sử dụng 0 từ phạm vi bên ngoài ngay lập tức). Điều này thật tuyệt vì bạn không phải sử dụng 11 hoặc lưu trữ bối cảnh 12 khi một hàm cần bối cảnh kèm theo.Hãy xem cách 0 được kế thừa từ chức năng bên ngoài: 9Lớp 14 giữ một mảng các số và cung cấp một phương thức 15 để chèn các số mới. Khi 15 được gọi mà không có đối số, việc đóng được trả về cho phép chèn các số. Việc đóng cửa này là một hàm mũi tên có 0 là ví dụ 18 vì bối cảnh được lấy từ vựng từ phương thức 19.When 15 is called without arguments, a closure is returned that allows inserting numbers. This closure is an arrow function that has 0 as 18 instance because the context is taken lexically from 19 method.Không có chức năng mũi tên, bạn phải sửa chữa bối cảnh theo cách thủ công. Nó có nghĩa là sử dụng các cách giải quyết như phương pháp 20: 0hoặc lưu trữ bối cảnh vào một biến riêng biệt 12: 1Tính minh bạch bối cảnh có thể được sử dụng khi bạn muốn giữ 0 như là, được lấy từ bối cảnh kèm theo. 4.2 gọi lại ngắnKhi tạo hàm mũi tên, các cặp dấu ngoặc đơn và niềng răng xoăn là tùy chọn cho một tham số và câu lệnh cơ thể đơn. Điều này giúp tạo ra các chức năng gọi lại rất ngắn. Hãy tạo một chức năng tìm thấy nếu một mảng chứa 23: 2 24 là một hàm mũi tên trông đơn giản.Lưu ý rằng các hàm mũi tên ngắn lồng nhau rất khó đọc. Cách thuận tiện để sử dụng biểu mẫu hàm mũi tên ngắn nhất là một cuộc gọi lại duy nhất (không làm tổ). Nếu cần thiết, hãy sử dụng cú pháp mở rộng của các hàm mũi tên khi viết các hàm mũi tên lồng nhau. Nó chỉ dễ đọc hơn. 5. Hàm máy phátHàm trình tạo trong JavaScript trả về một đối tượng Trình tạo. Cú pháp của nó tương tự như biểu thức chức năng, khai báo chức năng hoặc khai báo phương thức, chỉ là nó yêu cầu ký tự sao 25.Hàm trình tạo có thể được khai báo trong các biểu mẫu sau: một. Mẫu khai báo chức năng 26: 3b. Mẫu biểu thức chức năng 27: 4c. Phương pháp tốc ký Định nghĩa Mẫu 28: 5Trong tất cả 3 trường hợp, hàm máy phát trả về đối tượng máy phát 29. Sau đó 29 được sử dụng để tạo ra một loạt các số được tăng lên.6. Một điều nữa: Chức năng mớiTrong các hàm JavaScript là các đối tượng hạng nhất - một hàm là đối tượng thường xuyên của loại 2. Các cách của khai báo được mô tả ở trên tạo ra cùng loại đối tượng hàm. Hãy xem một ví dụ: The ways of the declaration described above create the same function object type. Let's see an example: 6Loại đối tượng hàm có hàm tạo: 32. Khi 32 được gọi là hàm tạo 34, một hàm mới được tạo. Các đối số 35 được truyền cho hàm tạo trở thành tên tham số cho hàm mới và đối số cuối cùng 36 được sử dụng làm mã cơ thể chức năng.When 32 is invoked as a constructor 34, a new function is created. The arguments 35 passed to constructor become the parameter names for the new function and the last argument 36 is used as the function body code.Hãy tạo một hàm tổng hợp hai số: 7 37 Được tạo bằng cách gọi hàm tạo 32 có các tham số 39 và 40 và cơ thể 41.Các chức năng được tạo ra theo cách này không có quyền truy cập vào phạm vi hiện tại, do đó, việc đóng cửa không thể được tạo. Chúng luôn được tạo ra trong phạm vi toàn cầu. Một ứng dụng có thể của 42 là một cách tốt hơn để truy cập đối tượng toàn cầu trong trình duyệt hoặc tập lệnh NodeJS: 8Hãy nhớ rằng các chức năng hầu như không bao giờ nên được khai báo bằng cách sử dụng 43. Vì cơ thể chức năng được đánh giá trong thời gian chạy, phương pháp này kế thừa nhiều vấn đề sử dụng 44: Rủi ro bảo mật, gỡ lỗi khó hơn, không có cách nào để áp dụng tối ưu hóa động cơ, không có trình soạn thảo tự động hoàn thành.almost never should be declared using
43. Because the function body is evaluated on runtime, this approach inherits many 44 usage problems: security risks, harder debugging, no way to apply engine optimizations, no editor auto-complete.7. Cuối cùng, cách nào tốt hơn?Không có người chiến thắng hoặc kẻ thua cuộc. Quyết định mà loại tuyên bố chọn phụ thuộc vào tình huống. Tuy nhiên, có một số quy tắc mà bạn có thể tuân theo trong các tình huống phổ biến. Nếu hàm sử dụng 0 từ hàm bao quanh, hàm mũi tên là một giải pháp tốt. Khi hàm gọi lại có một câu lệnh ngắn, hàm mũi tên cũng là một tùy chọn tốt, bởi vì nó tạo mã ngắn và ánh sáng. Đối với cú pháp ngắn hơn khi khai báo các phương thức trên các chữ cái đối tượng, khai báo phương pháp tốc ký là thích hợp hơn. 42 Cách khai báo các chức năng thông thường không nên được sử dụng. Chủ yếu là do nó mở ra các rủi ro bảo mật tiềm năng, không cho phép mã tự động hoàn thành trong các biên tập viên và mất tối ưu hóa động cơ.Bạn thích các hàm mũi tên hoặc biểu thức chức năng? Hãy cho tôi biết tại sao trong một bình luận dưới đây! Bạn có thể gán một hàm cho một biến trong JS không?Bạn có thể làm việc với các chức năng như thể chúng là đối tượng. Ví dụ: bạn có thể gán các hàm cho các biến, cho các thành phần mảng và cho các đối tượng khác. Chúng cũng có thể được truyền xung quanh như là đối số cho các chức năng khác hoặc được trả lại từ các chức năng đó. Sự khác biệt duy nhất với các đối tượng là các chức năng có thể được gọi.you can assign functions to variables, to array elements, and to other objects. They can also be passed around as arguments to other functions or be returned from those functions. The only difference with objects is that functions can be called.
Làm thế nào để bạn gán một hàm cho một biến?Phương pháp 1: Gán đối tượng hàm cho tên biến mới Một cách đơn giản để hoàn thành tác vụ là tạo tên biến mới G và gán đối tượng hàm f cho biến mới với câu lệnh f = g.create a new variable name g and assign the function object f to the new variable with the statement f = g.
Tôi có thể lưu trữ một chức năng trong một biến không?Các chức năng được lưu trữ trong các biến không cần tên chức năng.Chúng luôn được gọi (được gọi) bằng cách sử dụng tên biến.Hàm trên kết thúc bằng dấu chấm phẩy vì nó là một phần của tuyên bố thực thi.. They are always invoked (called) using the variable name. The function above ends with a semicolon because it is a part of an executable statement.
Làm thế nào để bạn gọi một hàm được lưu trữ trong một biến trong JavaScript?Có hai phương thức để gọi một hàm từ chuỗi được lưu trữ trong một biến.Chế độ đầu tiên là bằng cách sử dụng phương thức đối tượng cửa sổ và phương thức thứ hai là bằng cách sử dụng phương thức eval ().using the window object method and the second one is by using eval() method. |