12/08/2018, 13:22

ECMAScript 6 fat arrow function

Bài viết cũng được post trên Kipalog # Ở đây có một bài giới thiệu các tinh năng mới của ES6 https://viblo.asia/nguyen.thanh.tungb/posts/WkwGnWzxv75g Bài này giới thiệu hàm mũi tên - arrow function trong ECMA Script 6, phiên bản kế tiếp của Javascript hay ECMAScript 5 (ES5) Uhm, trước ...

Bài viết cũng được post trên Kipalog #

Ở đây có một bài giới thiệu các tinh năng mới của ES6 https://viblo.asia/nguyen.thanh.tungb/posts/WkwGnWzxv75g

Bài này giới thiệu hàm mũi tên - arrow function trong ECMA Script 6, phiên bản kế tiếp của Javascript hay ECMAScript 5 (ES5)

Uhm, trước khi đi vào vấn đề chính thì cần luộc lại một số khái niệm cơ bản về hàm trong Javascript. Lưu ý rằng phần sau đây thuần túy là các khái niệm chung trong Javascript, trong trường hợp bạn chỉ muốn biết về JS mà không quan tâm đến ES6 hay các công nghệ tiên phong thì đây là phần dành cho bạn (tất nhiên với một điều kiện nữa là bạn mới tiếp cận với JS).

ABC về hàm js

Function

Định nghĩa của hàm cho phép tôi được bỏ qua, tôi xin đi vào luôn phân loại. Hàm trong javascript có thể được chia làm 2 loại phân theo chức năng: phương thức và thủ tục con. Lưu ý đây chỉ là phân loại về chức năng, còn về mặt thực hành, chỉ có duy nhất 1 kiểu function.

  • Phương thức (method): Là một hành động, khả năng của một đối tượng thực hiện một tác vụ hoàn chỉnh có ý nghĩa với đối tượng đấy.
  • Thủ tục con (subroutine): Là một phần của tác vụ được chia nhỏ ra để phục vụ cho việc đơn giản hóa và tái sử dụng mã.

Nếu bạn cảm thấy khó hiểu thì đó là lỗi của tôi, vì đã đưa ra mấy cái định nghĩa lằng nhằng làm phức tạp hóa vấn đề. Cho tôi lấy ví dụ:

Bạn là một đối tượng, có một khả năng là đi, việc này rõ ràng có ý nghĩa với bạn, vậy đi là một phương thức của bạn. Bạn định nghĩa việc đi bằng một chuỗi các động tác như di chuyển chân trái lên trên 1 đoạn, rồi tiếp đến chân phải. Các hành động nhấc chân trái, nhấc chân phải không thực hiện một chức năng hoàn chỉnh, như vậy chúng được coi là thủ tục con

var  you = {
	go: function(step) { <-- method
    	function moveYourFoot(){ // <-- subroutine
        	// magic code that make your foot move
        }

    	while (step--) {
        	moveYourFoot();
        }
    }
}

Closure

Ở đây nảy sinh một vấn đề, thủ tục con là một phần nhỏ của phương thức, vậy nên chăng thủ tục con nên được tiếp cận với các biến của phương thức? Ví dụ, trong thủ tục moveYourFoot chúng ta nên biết số bước đã thực hiện để còn điều chỉnh tốc độ (đi nhiều sẽ mỏi, phải không?). OK, vậy ta sẽ hiểu rằng phạm vi (scope) của moveYourFoot là bao đóng của scope của go, vì các biến của go có thể được truy cập từ moveYourFoot

Định nghĩa bao đóng: Cho lược đồ quan hệ R=(U, F). Bao đóng của tập thuộc tính X (X ⊆ U), ký hiệu X+ là tập tất hợp cả các thuộc tính mà có thể suy diễn logic từ X.

^ lòe thiên hạ tí             </div>
            
            <div class=

0