Chương trình về bao đóng trong JavaScript ✅ Chi Tiết
Kinh Nghiệm Hướng dẫn Chương trình về bao đóng trong JavaScript Mới Nhất
Bùi Ngọc Chi đang tìm kiếm từ khóa Chương trình về bao đóng trong JavaScript được Cập Nhật vào lúc : 2022-12-26 22:15:15 . Với phương châm chia sẻ Mẹo về trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi tham khảo Post vẫn ko hiểu thì hoàn toàn có thể lại Comments ở cuối bài để Tác giả lý giải và hướng dẫn lại nha.“Master the JavaScript Interview” là một loạt bài đăng được thiết kế để sẵn sàng sẵn sàng cho những ứng viên những thắc mắc phổ biến mà người ta hoàn toàn có thể gặp phải khi ứng tuyển vào vị trí JavaScript cấp trung đến cấp cao. Đây là những thắc mắc tôi thường xuyên sử dụng trong những cuộc phỏng vấn thực tế
Nội dung chính Show- Đóng cửa là gì?Sử dụng Closures (Ví dụ)Lượt của bạnKhám phá sê-riCác ví dụ về bao đóng trong JavaScript là gì?Làm cách nào để đạt được sự đóng cửa trong JavaScript?Điều nào sau đây là đóng trong JavaScript?Mục đích của bao đóng trong JavaScript là gì?
Tôi đang khởi động loạt bài với thắc mắc $40k. Nếu bạn trả lời sai thắc mắc này, rất hoàn toàn có thể bạn sẽ không được tuyển dụng. Nếu bạn được tuyển dụng, rất hoàn toàn có thể bạn sẽ được tuyển dụng với tư cách là nhà phát triển cơ sở, bất kể bạn đã thao tác với tư cách là nhà phát triển phần mềm trong bao lâu. Trung bình, những nhà phát triển cơ sở được trả ít hơn 40.000 USD/năm so với những kỹ sư phần mềm có kinh nghiệm tay nghề hơn
Các bao đóng rất quan trọng vì chúng trấn áp những gì có và không còn trong phạm vi trong một hàm rõ ràng, cùng với những biến nào được chia sẻ Một trong những hàm anh chị em trong cùng một phạm vi chứa. Hiểu cách những biến và hàm liên quan với nhau là rất quan trọng để hiểu điều gì đang xảy ra trong mã của bạn, theo cả phong cách lập trình hướng đối tượng và hiệu suất cao
Lý do khiến việc bỏ lỡ thắc mắc này trở nên bất lợi trong cuộc phỏng vấn là vì sự hiểu nhầm về phương pháp hoạt động và sinh hoạt giải trí của bao đóng là một tín hiệu khá rõ ràng hoàn toàn có thể đã cho tất cả chúng ta biết bạn thiếu kinh nghiệm tay nghề sâu sắc, không riêng gì có trong JavaScript mà còn trong bất kỳ ngôn từ nào phụ thuộc nhiều vào bao đóng (
Viết mã JavaScript mà không hiểu về bao đóng cũng như nỗ lực nói tiếng Anh mà không hiểu những quy tắc ngữ pháp — bạn hoàn toàn có thể hiểu ý tưởng của tớ, nhưng hoàn toàn có thể hơi lúng túng
Bạn cũng tiếp tục dễ bị hiểu nhầm khi nỗ lực hiểu những gì người khác viết
Bạn không riêng gì có việc biết bao đóng là gì mà còn phải biết tại sao nó lại quan trọng và hoàn toàn có thể thuận tiện và đơn giản trả lời một số trong những trường hợp sử dụng hoàn toàn có thể có cho bao đóng
Các bao đóng thường được sử dụng trong JavaScript để bảo mật thông tin tài liệu đối tượng, trong những trình xử lý sự kiện và những hàm gọi lại cũng như trong những ứng dụng một phần, currying và bộ sưu tập lập trình hiệu suất cao khác
Nếu bạn không thể trả lời thắc mắc này, nó hoàn toàn có thể khiến bạn mất việc, hoặc ~$40k/năm
Hãy sẵn sàng sẵn sàng để theo dõi nhanh gọn. “Bạn hoàn toàn có thể đặt tên cho hai cách sử dụng phổ biến cho việc đóng cửa không?”
Đóng cửa là gì?
Bao đóng là sự việc phối hợp của một hiệu suất cao được nhóm lại với nhau (kèm theo) với những tham chiếu đến trạng thái xung quanh của nó (môi trường tự nhiên thiên nhiên từ vựng). Nói cách khác, một bao đóng được cho phép bạn truy cập vào phạm vi của hiệu suất cao bên phía ngoài từ một hiệu suất cao bên trong. Trong JavaScript, những bao đóng được tạo mọi khi một hàm được tạo, tại thời điểm tạo hàm
Để sử dụng bao đóng, hãy xác định một hàm bên trong một hàm khác và hiển thị nó. Để hiển thị một hiệu suất cao, hãy trả lại hoặc chuyển nó sang một hiệu suất cao khác
Hàm bên trong sẽ có quyền truy cập vào những biến trong phạm vi hàm bên phía ngoài, trong cả sau khi hàm bên phía ngoài đã trả về
Sử dụng Closures (Ví dụ)
Trong số những thứ khác, bao đóng thường được sử dụng để đáp ứng quyền riêng tư cho tài liệu của đối tượng. Quyền riêng tư tài liệu là thuộc tính thiết yếu giúp chúng tôi lập trình giao diện chứ không phải triển khai. Đây là một khái niệm quan trọng giúp chúng tôi xây dựng phần mềm mạnh mẽ và tự tin hơn vì những cụ ông cụ bà thể triển khai có nhiều kĩ năng thay đổi theo cách phá vỡ hơn so với hợp đồng giao diện
“Chương trình hướng tới giao diện, không phải triển khai. ”
Mẫu thiết kế. Các yếu tố của phần mềm hướng đối tượng tái sử dụng
Trong JavaScript, bao đóng là cơ chế chính được sử dụng để được cho phép bảo mật thông tin tài liệu. Khi bạn sử dụng bao đóng để bảo mật thông tin tài liệu, những biến kèm theo chỉ nằm trong phạm vi của hàm chứa (bên phía ngoài). Bạn không thể lấy tài liệu từ phạm vi bên phía ngoài ngoại trừ thông qua những phương thức đặc quyền của đối tượng. Trong JavaScript, bất kỳ phương thức tiếp xúc nào được xác định trong phạm vi đóng đều có đặc quyền. Ví dụ
Chơi với cái này trong JSBin. (Không thấy bất kỳ đầu ra nào? Sao chép và dán mã HTML này vào khung HTML. )
Trong ví dụ trên, `. phương thức get()` được xác định bên trong phạm vi của `getSecret()`, được cho phép nó truy cập vào bất kỳ biến nào từ `getSecret()`, và làm cho nó trở thành một phương thức đặc quyền. Trong trường hợp này, tham số, `bí mật`
Các đối tượng không phải là cách duy nhất để tạo ra quyền riêng tư tài liệu. Bao đóng cũng hoàn toàn có thể được sử dụng để tạo những hàm trạng thái có mức giá trị trả về hoàn toàn có thể bị ảnh hưởng bởi trạng thái bên trong của chúng, e. g
const secret = msg => () => msg;Có sẵn trên JSBin. (Không thấy bất kỳ đầu ra nào? Sao chép và dán mã HTML này vào khung HTML. )
Trong lập trình hiệu suất cao, những bao đóng thường được sử dụng cho ứng dụng một phần & cà ri. Điều này đòi hỏi một số trong những định nghĩa
Đăng kí. Quá trình áp dụng một hàm cho những đối số của nó để tạo ra một giá trị trả về
ứng dụng một phần. Quá trình áp dụng một hiệu suất cao cho một số trong những đối số của nó. Hàm được áp dụng một phần được trả lại để sử dụng sau. Ứng dụng một phần sửa lỗi (áp dụng một phần hàm cho) một hoặc nhiều đối số bên trong hàm được trả về và hàm được trả về sẽ lấy những tham số còn sót lại làm đối số để hoàn thành xong ứng dụng hàm
Ứng dụng một phần tận dụng phạm vi đóng để sửa những tham số. Bạn hoàn toàn có thể viết một hàm chung sẽ áp dụng một phần đối số cho hàm đích. Nó sẽ có chữ ký sau
partialApply(targetFunction: Function, ...fixedArgs: Any[]) =>functionWithFewerParams(...remainingArgs: Any[])
Nếu bạn cần trợ giúp đọc chữ ký ở trên, hãy xem Rtype. Chữ ký hiệu suất cao đọc
Nó sẽ nhận một hàm nhận bất kỳ số lượng đối số nào, theo sau là những đối số mà tất cả chúng ta muốn áp dụng một phần cho hàm và trả về một hàm sẽ nhận những đối số còn sót lại
Một ví dụ sẽ giúp. Giả sử bạn có một hàm cộng hai số
const add = (a, b) => a + b;Bây giờ bạn muốn một hiệu suất cao thêm 10 vào bất kỳ số nào. Chúng tôi sẽ gọi nó là `add10()`. Kết quả của `add10(5)` phải là `15`. Hàm `partialApply()` của chúng tôi hoàn toàn có thể biến điều đó thành hiện thực
const add10 = partialApply(add, 10);add10(5);
Trong ví dụ này, đối số, `10` trở thành tham số cố định và thắt chặt được ghi nhớ bên trong phạm vi đóng `add10()`
Hãy xem cách triển khai `partialApply()` khả thi
Có sẵn trên JSBin. (Không thấy bất kỳ đầu ra nào? Sao chép và dán mã HTML này vào khung HTML. )
Như bạn hoàn toàn có thể thấy, nó chỉ trả về một hàm duy trì quyền truy cập vào những đối số `fixedArgs` đã được chuyển vào hàm `partialApply()`
Lượt của bạn
Bài đăng này còn có một bài đăng video đi kèm và bài tập thực hành cho những thành viên của EricElliottJS. com. Nếu bạn đã là thành viên, hãy đăng nhập và rèn luyện ngay
Nếu bạn chưa phải là thành viên, hãy đăng ký ngay ngày hôm nay
Khám phá sê-ri
- Đóng cửa là gì?Sự khác lạ giữa thừa kế lớp và nguyên mẫu là gì?Hàm thuần túy là gì?Thành phần hiệu suất cao là gì?Lập trình hiệu suất cao là gì?Lời hứa là gì?Các kĩ năng mềm
Cập nhật.
Tháng 7 năm 2022 — Phần ra mắt rõ ràng để lý giải tại sao trả lời sai thắc mắc này hoàn toàn có thể khiến bạn mất việc hoặc mất nhiều tiền lương.
Eric Elliott là cố vấn nền tảng và sản phẩm công nghệ tiên tiến, tác giả của “Phần mềm soạn thảo”, đồng sáng lập của EricElliottJS. com và DevAnywhere. io và cố vấn nhóm phát triển. Anh ấy đã đóng góp vào trải nghiệm phần mềm cho Adobe Systems, Zumba Fitness, The Wall Street Journal, ESPN, BBC và những nghệ sĩ thu âm số 1 gồm có Usher, Frank Ocean, Metallica, v.v.