Chức năng javascript khó hiểu
Quay trở lại cuối những năm 90 - khi tôi học JavaScript - chúng tôi được dạy viết hàm “Xin chào thế giới” bằng cách sử dụng câu lệnh hàm. Như thế này…
Ngày nay, có vẻ như tất cả những đứa trẻ tuyệt vời đang viết chức năng “Xin chào thế giới” như thế này…
Đây là một biểu thức hàm trong ES2015 JavaScript và nó hấp dẫn kinh khủng. Thật đẹp khi nhìn vào. Đó là tất cả một dòng. rất ngắn gọn. thật đáng yêu Nó sử dụng chức năng mũi tên, một trong những tính năng phổ biến nhất của ES2015 Khi tôi lần đầu tiên nhìn thấy điều này, tôi đã như Mặc dù Babel miễn phíVì vậy, sau gần 20 năm sử dụng JavaScript và sau khi sử dụng ES2015 trên một số dự án, đây là cách tôi sẽ viết hàm “Xin chào thế giới” ngày hôm nay
Bây giờ tôi đã chỉ cho bạn cách mới, tôi chắc chắn rằng bạn sẽ không thể đứng nhìn mã trường học cũ ở trên Toàn bộ ba dòng cho một chức năng nhỏ đơn giản. Tất cả những nhân vật phụ đó Tôi biết bạn đang nghĩ gì… Không ai có thời gian cho điều đóTôi yêu chức năng mũi tên, tôi thực sự làm. Nhưng khi tôi cần khai báo một hàm cấp cao nhất trong mã của mình, tôi vẫn sử dụng một câu lệnh hàm kiểu cũ tốt Câu nói này của “Chú Bob” Martin giải thích tại sao “…tỷ lệ thời gian dành cho đọc so với viết là hơn 10 trên 1. Chúng tôi liên tục đọc mã cũ như một phần của nỗ lực viết mã mới. Câu lệnh hàm có hai ưu điểm rõ ràng so với biểu thức hàm Lợi thế #1. Ý định rõ ràngKhi quét qua hàng nghìn dòng mã mỗi ngày, thật hữu ích khi có thể tìm ra ý định của lập trình viên một cách nhanh chóng và dễ dàng nhất có thể Hãy xem này
Bạn đọc tất cả các ký tự đó và bạn vẫn không biết dấu chấm lửng đại diện cho một chức năng hay một số giá trị khác. Nó có thể là
…hoặc nó có thể dễ dàng như vậy
Nếu bạn sử dụng một câu lệnh chức năng, sẽ không có sự mơ hồ như vậy Nhìn vào
…đấu với
Ý định rõ ràng ngay từ đầu dòng Nhưng có thể bạn đang sử dụng trình chỉnh sửa mã có một số đầu mối mã màu. Có thể bạn là người đọc tốc độ. Có lẽ bạn không nghĩ rằng đó là một vấn đề lớn tôi nghe bạn. Sự căng thẳng trông vẫn khá gợi cảm Trên thực tế, nếu đây là lý do duy nhất của tôi, tôi có thể đã tìm ra cách thuyết phục bản thân rằng đó là một sự đánh đổi xứng đáng. Nhưng đó không phải là lý do duy nhất của tôi… Lợi thế #2. Thứ tự khai báo == thứ tự thực hiệnLý tưởng nhất là tôi muốn khai báo mã của mình ít nhiều theo thứ tự mà tôi mong đợi nó sẽ được thực thi Đây là showstopper đối với tôi. bất kỳ giá trị nào được khai báo bằng từ khóa const đều không thể truy cập được cho đến khi thực thi đạt đến giá trị đó Chuẩn bị cho biệt ngữ hoa mỹ để chứng minh rằng tôi biết những gì tôi đang nói về (hy vọng)Cảnh báo đúng. Tôi chuẩn bị đi tất cả, "Giáo sư JavaScript" về bạn. Điều duy nhất bạn cần hiểu trong tất cả các thuật ngữ dưới đây là bạn không thể sử dụng const cho đến khi bạn khai báo nó Đoạn mã sau sẽ báo lỗi ________số 8Điều này là do, khi công cụ JavaScript đọc mã, nó sẽ liên kết “sayHelloTo”, nhưng nó sẽ không khởi tạo nó Tất cả các khai báo trong JavaScript đều bị ràng buộc sớm, nhưng chúng được khởi tạo khác nhau Nói cách khác, JavaScript liên kết khai báo của “sayHelloTo” — đọc nó trước và tạo một khoảng trống trong bộ nhớ để giữ giá trị của nó — nhưng nó không đặt “sayHelloTo” thành bất kỳ thứ gì cho đến khi đạt đến nó trong quá trình thực thi Khoảng thời gian giữa “sayHelloTo” bị ràng buộc và “sayHelloTo” được khởi tạo được gọi là vùng chết tạm thời (TDZ) Nếu bạn đang sử dụng ES2015 trực tiếp trong trình duyệt (trái ngược với việc chuyển mã xuống ES5 bằng thứ gì đó như Babel), đoạn mã sau thực sự cũng gây ra lỗi
Đoạn mã trên, được viết bằng “var” thay vì “const”, sẽ không gây ra lỗi vì vars được khởi tạo dưới dạng không xác định khi chúng bị ràng buộc, trong khi const hoàn toàn không được khởi tạo tại thời điểm bị ràng buộc. Nhưng tôi lạc đề… Các câu lệnh chức năng không gặp phải sự cố TDZ này. Sau đây là hoàn toàn hợp lệ 0Điều này là do các câu lệnh hàm được khởi tạo ngay khi chúng bị ràng buộc — trước khi bất kỳ mã nào được thực thi Vì vậy, bất kể khi nào bạn khai báo hàm, nó sẽ có sẵn trong phạm vi từ vựng của nó ngay khi mã bắt đầu thực thi Giáo sư JavaScript, ra ngoàiNhững gì tôi vừa mô tả ở trên buộc chúng ta phải viết mã có vẻ lộn ngược. Chúng ta phải bắt đầu với chức năng cấp thấp nhất và tiến dần lên Bộ não của tôi không hoạt động theo cách đó. Tôi muốn bối cảnh trước các chi tiết Hầu hết mã được viết bởi con người. Vì vậy, có nghĩa là thứ tự hiểu biết của hầu hết mọi người gần như tuân theo thứ tự thực thi của hầu hết mã Trên thực tế, sẽ không hay sao nếu chúng tôi có thể cung cấp một bản tóm tắt nhỏ về API của mình ở đầu mã của chúng tôi? Kiểm tra mô-đun giỏ hàng (hơi giả tạo) này… 1Với các biểu thức hàm, nó sẽ giống như… 2Hãy tưởng tượng đây là một mô-đun lớn hơn với nhiều chức năng nhỏ bên trong. Bạn thích cái nào? Có những người sẽ lập luận rằng việc sử dụng thứ gì đó trước khi bạn tuyên bố nó là không tự nhiên và có thể gây ra những hậu quả không lường trước được. Thậm chí có những người cực kỳ thông minh đã nói những điều như vậy Đó chắc chắn là một ý kiến - không phải là sự thật - rằng cách này tốt hơn cách kia Nhưng nếu bạn hỏi tôi. Mã là giao tiếp. Mã tốt kể một câu chuyện Tôi sẽ để các trình biên dịch và bộ chuyển đổi, bộ rút gọn và bộ xấu xí xử lý việc tối ưu hóa mã cho máy Tôi muốn tối ưu hóa mã của mình để con người hiểu Tuy nhiên, những chức năng mũi tên đó thì sao?Đúng. Vẫn gợi cảm và vẫn tuyệt vời Tôi thường sử dụng các hàm mũi tên để chuyển một hàm nhỏ làm giá trị cho hàm bậc cao hơn. Tôi sử dụng các chức năng mũi tên với lời hứa, với bản đồ, với bộ lọc, với giảm. Họ là những con ong đầu gối, bạn của tôi Vài ví dụ 3Tôi đã sử dụng một vài tính năng JavaScript mới khác trong bài viết này. Nếu bạn muốn tìm hiểu thêm về tiêu chuẩn JavaScript mới nhất (ES2015) và tất cả các tính năng thú vị mà nó cung cấp, bạn nên tải miễn phí hướng dẫn bắt đầu nhanh của tôi Mục tiêu của tôi là luôn giúp đỡ càng nhiều nhà phát triển càng tốt, nếu bạn thấy bài viết này hữu ích, vui lòng nhấn nút ❤ (khuyến nghị) để những người khác sẽ thấy nó. Cảm ơn QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO DevMastery. com. Tư vấn. Giáo viên Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn Học cách viết mã miễn phí. Chương trình giảng dạy nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có việc làm với tư cách là nhà phát triển. Bắt đầu |