Làm cách nào để kết hợp hai chức năng trong JavaScript?

[00. 00. 20] Giảm luôn hoạt động trên hai giá trị cùng một lúc. Và khi tôi gọi nó là phép toán kết hợp, ý tôi là chúng ta lấy hai giá trị đó. Và theo một cách nào đó, hình dạng hoặc hình thức, chúng tôi kết hợp chúng thành một. Vì vậy, chúng tôi lấy các giá trị. Chúng tôi kết hợp chúng thành một và sau đó chúng tôi bắt đầu lại

[00. 00. 38] Và chúng tôi hỏi, tôi có giá trị đó cộng với giá trị khác không? . Vì vậy, ở kết quả cuối cùng của việc giảm, bạn thường chỉ có một giá trị riêng lẻ thay vì một danh sách

[00. 00. 59] Vì bạn bắt đầu với hai mục đầu tiên và kết hợp chúng, sau đó kết hợp mục đó với mục tiếp theo, và mục đó với mục tiếp theo, v.v. Và cuối cùng, bạn chỉ có giá trị kết hợp. Bạn không còn danh sách nào nữa. Vì vậy, giảm là khác nhau

[00. 01. 12] Nó không tạo ra một danh sách mới, nói chung
>> Kyle Simpson. Giảm thực sự, có lẽ là mạnh nhất trong tất cả các toán tử và nó chắc chắn đủ mạnh để xứng đáng với danh hiệu Con dao quân đội Thụy Sĩ của lập trình chức năng. Bởi vì một khi bạn học cách sử dụng reduce, bạn bắt đầu nhận ra rằng rất nhiều thứ bạn làm chỉ là một reduce.

[00. 01. 41] Nó có thể được thực hiện dưới dạng giảm. tôi có thể làm điều đó như là một giảm. tôi có thể làm điều đó như là một giảm. Chúng tôi đã có câu hỏi trong khóa học này và một số người trực tuyến đã nói rằng, còn điều này thì sao?

[00. 01. 55] Không phải lúc nào nó cũng phải trả về một giá trị kín đáo. Bạn có thể giảm danh sách thành danh sách khác. Và ngược lại, bạn có thể rút gọn một danh sách thành một danh sách thậm chí còn dài hơn danh sách ban đầu. Bởi vì giảm không thực sự là giảm, mà thực sự là kết hợp
>> Kyle Simpson. Vì vậy, hãy xem xét việc xây dựng cho mình một tiện ích giảm thiểu

[00. 02. 25] Bạn sẽ nhận thấy rằng ở đây, chức năng giảm tốc của tôi ở trên đó. Phải mất hai tham số, vì không có ý nghĩa gì khi kết hợp một giá trị với chính nó. Chúng tôi luôn kết hợp hai giá trị. Đó là một hình dạng khác và điều đó thực sự quan trọng cần ghi nhớ trong đầu của bạn khi chúng ta kết thúc khóa học này, bạn sẽ muốn ghi nhớ điều đó

[00. 02. 42] Đó là một loại hình dạng khác và một loại hoạt động khác. Chúng tôi đang lấy hai giá trị. Trong trường hợp này, chúng ta đang nhân với nhau. Đó là cách chúng tôi kết hợp chúng. Bao nhiêu bạn kết hợp hai chuỗi?
>> Kyle Simpson. Nếu tôi gọi một hàm gọi là foo và nó lấy hai chuỗi riêng lẻ làm đối số và tôi muốn trả về một giá trị duy nhất, thì đâu là ví dụ về cách tôi có thể kết hợp hai chuỗi đó?

[00. 03. 19]
>> Kyle Simpson. Tôi có thể nối hai chuỗi lại với nhau. Đó sẽ là một cách kết hợp chúng, nhưng tôi thậm chí có thể tinh vi hơn. Đây là con dao quân đội Thụy Sĩ của tôi. Tôi có thể nói, sự kết hợp của hai điều này là tôi sẽ chọn cái dài hơn trong hai cái và ném cái còn lại đi

[00. 03. 33] Đó vẫn là một cách hợp lệ để mô tả sự kết hợp. Kết hợp hai giá trị riêng lẻ này có thể kết hợp chúng thành một mảng gồm hai giá trị. Đó là một cách hợp lý để kết hợp chúng. Có rất nhiều và rất nhiều, và có thể là vô số cách kết hợp hai giá trị bất kỳ. Và đó là điều chúng tôi muốn nói khi nói rằng đó là một con dao của Quân đội Thụy Sĩ, bởi vì bạn có thể làm bất cứ điều gì bạn muốn với hai giá trị đó

[00. 03. 58] Bạn sẽ làm gì nếu có hai chức năng?
>> Kyle Simpson. Một tác phẩm. Chúng tôi cũng đã có người hỏi điều đó sớm hơn. Soạn và đường ống. Đó là những giảm cơ bản. Một danh sách các hàm mà chúng ta soạn cũng giống như một danh sách các hàm mà chúng ta rút gọn trong đó phép rút gọn bao gồm hai mục lại với nhau, sau đó gộp hai mục nữa và gộp hai mục khác

[00. 04. 33] Gọi một cái, đặt đầu ra của nó là đầu vào của cái tiếp theo. Đó là những gì nó được. Vì vậy, tiện ích kết hợp của chúng ta ở đây cần bắt đầu trong một danh sách, mảng và hàm rút gọn. Nhưng chúng tôi cũng thường cung cấp một giá trị ban đầu. Đó là quan trọng. Chúng tôi cung cấp một giá trị ban đầu. Bởi vì đôi khi mức giảm của bạn vì nó hoạt động trên hai thứ, đôi khi bạn cần có giá trị ban đầu cho một trong những thứ đó

[00. 04. 59] Và do đó, bạn bắt đầu giảm với mục đầu tiên trong danh sách cộng với giá trị ban đầu. Vì vậy, phần giảm của tôi lấy giá trị đầu tiên trong danh sách. Giá trị ban đầu và nó kết hợp chúng, sau đó chuyển sang giá trị thứ hai và kết hợp, v.v. Mặt khác, đôi khi bạn không cần cung cấp giá trị ban đầu nào cả

[00. 05. 18] Bởi vì mục đầu tiên trong danh sách có thể được lấy làm giá trị ban đầu và chúng tôi có thể bắt đầu giảm với mục thứ hai trong danh sách và chỉ cần bắt đầu kết hợp theo cách đó. Bạn sẽ gặp cả hai trường hợp đó trong chương trình của mình. Đôi khi, bạn sẽ cần một giá trị ban đầu và đôi khi bạn sẽ không

[00. 05. 37]
>> Kyle Simpson. Một số tiện ích sẽ cho phép đó là tùy chọn. Một số tiện ích yêu cầu bạn cung cấp giá trị ban đầu. Và trong những trường hợp đó, nếu bạn phải cung cấp một giá trị ban đầu, những gì bạn có thể làm thực sự là chuyển giá trị đầu tiên của danh sách làm giá trị ban đầu của bạn và sau đó bắt đầu giảm ở vị trí thứ hai

[00. 06. 00] Vì vậy, một số tiện ích đủ thông minh để tùy chọn đó và một số thì không
>> Kyle Simpson. Đây, kết hợp của tôi với một danh sách các số mà tôi đang nhân. Tôi nhân 1 nhân 2 nhân 4 nhân 5. Tôi có cần một giá trị ban đầu ở đó để nhân các số không?
>> Kyle Simpson. Tôi sử dụng giá trị ban đầu là 1, nhưng tôi có cần không?

[00. 06. 28]
>> Kyle Simpson. Ở đó, tôi chỉ cần nhân các số với nhau mà không cần giá trị ban đầu là đủ. Tiện ích của tôi không hỗ trợ điều đó, vì đó là một tiện ích đơn giản hóa. Nhưng nếu tiện ích của tôi đã biến cái đó thành tùy chọn, tôi có thể bỏ nó đi. Nhưng đây là một ví dụ về việc giảm yêu cầu giá trị ban đầu

[00. 06. 49] Vì ở đây, tôi muốn rút gọn bằng từ viết tắt rút gọn của mình. Mỗi khi nó được gọi, nó sẽ được cung cấp một chuỗi giống như một chuỗi được nối hoặc một chuỗi đang phát triển và sau đó là một từ để thêm vào nó. Nhưng bạn sẽ nhận thấy rằng tôi chỉ muốn lấy ký tự đầu tiên của mỗi chuỗi và kết hợp nó vào, vì tôi đang viết tắt

[00. 07. 08] Điều gì sẽ xảy ra nếu tôi bỏ qua giá trị ban đầu của chuỗi trống ở đó?
>> Diễn giả 2. Bạn sẽ kết thúc với undefined ở đầu chuỗi của mình?
>> Kyle Simpson. Không. Nếu chúng ta bỏ qua giá trị ban đầu, hành vi mặc định là bắt đầu với mục đầu tiên làm giá trị ban đầu là từ Chức năng

[00. 07. 37] Và chúng tôi sẽ bắt đầu rút gọn ở từ thứ hai, đó là từ Đèn. Vì vậy, chuỗi kết quả cuối cùng của chúng ta sẽ là gì?
>> Kyle Simpson. Để trở thành LJS chức năng thay vì FLJS, vì chúng tôi sẽ bắt đầu với điều đó. Điều đó sẽ xuất hiện dưới dạng chuỗi trong từ viết tắt được gọi đầu tiên của chúng tôi và chúng tôi giữ toàn bộ điều đó và sau đó chúng tôi nhận lời. charAt đó là từ Light, chúng tôi sẽ chỉ lấy L và bắt đầu đặt nó vào

[00. 08. 07] Vì vậy, chúng tôi chỉ có LJS chức năng. Vì vậy, đây là một ví dụ mà chúng tôi thực sự cần một giá trị ban đầu một cách hợp pháp. Slide trước, chúng ta không cần giá trị ban đầu. Bạn sẽ gặp cả hai trường hợp mà bạn gặp phải trong mã hóa của mình
>> Diễn giả 2. Nếu bạn đặt charAt một, nó có cung cấp cho bạn điều tương tự như khi bạn chưa đặt giá trị ban đầu không?

[00. 08. 31] Nó vẫn cung cấp cho bạn LJS chức năng chứ?
>> Kyle Simpson. CharAt vẫn sẽ cố gắng đạt được vị trí đầu tiên, ý tôi là, sẽ cố gắng đạt được một nhân vật hoặc bất kỳ vị trí nào mà bạn yêu cầu. Vì vậy, nếu bạn nói charAt của một và bạn để lại chuỗi trống, bạn sẽ kết thúc bằng UIAT

[00. 08. 49] Ký tự thứ hai của mỗi ký tự đó
>> Diễn giả 2. Tôi thấy. Ừ
>> Kyle Simpson. Và nếu bạn bỏ qua chuỗi trống giá trị ban đầu, bạn sẽ kết thúc với IAT chức năng. Một ví dụ về việc giảm trên một danh sách các chức năng là gì?

[00. 09. 15]
>> Kyle Simpson. Bạn có thể kết hợp các lời hứa với nhau bằng cách xâu chuỗi một lời hứa vào lời hứa tiếp theo và vào lời hứa tiếp theo. Và bây giờ bạn sẽ có một chuỗi, một loạt các lời hứa với nhau. [COUGH] Chúng ta sắp nghỉ giải lao ở đây, nhưng tôi chỉ muốn để lại cho bạn một suy nghĩ trước giờ giải lao rằng những hoạt động trong danh sách này

[00. 09. 35] Chúng tôi đã minh họa chúng dựa trên các mảng. Nhưng thực sự và thực sự, đây là các hoạt động cấu trúc dữ liệu. Và để tất cả những khái niệm mà chúng ta đang thực hiện có thể được khái quát hóa thành một đối tượng gồm các thuộc tính hoặc thành một cái cây trong đó các giá trị khác nhau của bạn là các nút trong cây hoặc những thứ tương tự

[00. 09. 58] Trên thực tế, tôi có hẳn một phần trong cuốn sách Functional Light JS của mình trong chương về hoạt động này. Có cả một phần ở cuối thực hiện và triển khai bản đồ, tạo, lọc theo cây tìm kiếm nhị phân trong đó mỗi mục bạn đang truy cập là một nút trong cây

[00. 10. 14] Và nó sẽ đi sâu trước và xuyên qua cây theo thứ tự phổ biến qua cây, v.v. Vì vậy, bạn có thể khái quát hóa những ý tưởng này cho hầu hết mọi cấu trúc dữ liệu, nhưng đây là điều tôi muốn bạn suy ngẫm trong thời gian nghỉ. Cấu trúc dữ liệu không phải lúc nào cũng giống cấu trúc dữ liệu

[00. 10. 35] Đôi khi cấu trúc dữ liệu mà bạn sẽ thao tác là mã của riêng bạn và tôi biết điều đó nghe có vẻ rất kỳ lạ, nhưng chúng ta sẽ thực hiện một bài tập sau khi kết thúc khóa học. Điều đó sẽ cho bạn cơ hội để thực hành với điều đó, vì vậy tôi chỉ muốn bạn nhai nó

[00. 10. 53] Việc xử lý một phần mã của tôi, các câu lệnh trong mã của tôi như một cấu trúc dữ liệu mà tôi muốn thực hiện một tập hợp các thao tác chống lại, có nghĩa là gì?

[00. 11. 10] Khi quay lại, chúng ta sẽ làm một bài tập để thực hành một loạt các phép toán danh sách này

Làm cách nào để viết nhiều hàm trong JavaScript?

Với nhiều chức năng, nhiệm vụ là gọi chúng chỉ bằng một sự kiện onclick bằng JavaScript. Dưới đây là một số phương pháp được thảo luận. Chúng ta có thể gọi chúng bằng cách đề cập đến tên của chúng cùng với phần tử xảy ra sự kiện onclick hoặc gọi một hàm duy nhất trước tiên và tất cả các hàm khác được gọi bên trong hàm đó .

Bạn có thể có nhiều chức năng trong một tệp js không?

Có. Tất nhiên rồi . Rốt cuộc, tất cả "các chức năng bên ngoài" thực sự chỉ là tác dụng phụ của việc làm ô nhiễm không gian tên ( window ) toàn cầu theo một cách nào đó. Vì vậy, dù sao đi nữa. để được trợ giúp về SO, hãy đảm bảo trình bày vấn đề/câu hỏi thực tế với mã thực tế có liên quan và các thông báo lỗi hoặc chỉ báo lỗi thực tế.

Chúng ta có thể có hai hàm có cùng tên trong JavaScript không?

Chúng ta hãy xem điều gì sẽ xảy ra khi chúng ta định nghĩa hai hàm có cùng tên và khác tham số. Trong JavaScript, khi bạn xác định nhiều hàm có cùng tên, hàm xuất hiện cuối cùng sẽ thay thế các khai báo hàm trước đó . Đây được gọi là "chức năng lưu trữ".

Hàm()() trong JavaScript là gì?

Trong JavaScript, một hàm cho phép bạn xác định một khối mã, đặt tên cho nó và sau đó thực thi nó bao nhiêu lần tùy thích. A JavaScript function can be defined using function keyword.