Sự khác biệt giữa Arrow Function và Function trong Javascript

Cùng xem Sự khác biệt giữa Arrow Function và Function trong Javascript trên youtube.

Arrow Function (hay còn gọi là hàm mũi tên) là một trong những tính năng mới và rất hay của ES6. Nó thừa hưởng cách viết ngắn gọn bằng cú pháp ES6. Tuy Arrow Function và Function đều là function, nhưng cách viết và cách tham chiếu tới bối cảnh (context) khác nhau.

Arrow Function sử dụng kí tự =>

hello = () => { Dongnaiart(‘hello’) } // hello()

còn Function thông thường thì :

function hello(){ Dongnaiart(‘hello’) } // hello()

Với TH có tham số :

hello = name => { Dongnaiart(‘hello ‘, name) }

Ta có thể giản lược được dấu () với trường hợp có 1 tham số truyền vào.

Ngoài ra, với arrow function ta có thể bỏ qua từ khoá return

double = x => x * 2

còn với function thì :

function double(x){ return x * 2 }

Ngoài ra, ta còn sử dụng được arrow function trong trường hợp: map, filter, forEach,…

Ví dụ:

Xem Thêm : Liệu phẫu thuật nâng ngực có nguy hiểm không? – Medlatec.vn

const numbers = [1,2,3,4] const newArray = Dongnaiart(item => item * 2 ) // Dongnaiart(newArray)

Trông có vẻ tối giản code so với:

const numbers = [1,2,3,4] const newArray = Dongnaiart(function(item){ return item => item * 2 }) // Dongnaiart(newArray)

  • Để hiểu được phần bối cảnh (context) vừa được giới thiệu trên thì ta phải hiểu qua chút về ‘this’ trong javascript đã.
  • This là một từ khoá khá quen thuộc trong khá nhiều ngôn ngữ, nó dùng để trỏ tới chính object gọi hàm đó và javasrcipt cũng thế.

const person = { name_person:’hue’, getNamePerson: function(){ return Dongnaiart } } DongnaiartamePerson() // hue

Trong một trường hợp khác

const name_person = ‘hue’ // bien nay nam trong object window function getNamePerson(){ return Dongnaiart_person } DongnaiartamePerson() // hue -> trỏ tới object window getNamePerson() // hue -> trỏ tới object window

Tuy nhiên, nếu cứ thế thì đã dễ hiểu biết bao, nhưng sự khó chịu sẽ dần hiện ra nếu ta sử dụng nó….

Ví dụ 1: Khi nhấn button thì hiện tên

const person = { name_person:’hue’, getNamePerson: function() { Dongnaiart(this.name_person); } }; //Ở đây this sẽ là object person DongnaiartamePerson(); $(‘button’).click(person.getNamePerson); //getNamePerson truyền vào như callback

Lúc này, ta sẽ giật mình vì hàm chạy không được như mong muốn.Kiểm tra kĩ, thì lúc này, this không phải là trỏ tới person mà là button mà ta click vào, vì vậy nó k có name_person.

Để giải quyết vấn đề này, chúng ta cần dùng tới bind

$(‘button’).click(person.getNamePerson.bind(person));

Ta sẽ gặp nhiều vấn đề này hơn trong trường hợp, hàm truyền vào như một callback như setInterval chẳng hạn.

Ví dụ 2:

Xem Thêm : 25 Những Câu Nói Hay Về Thời Gian Dành Cho Bạn

const person = { name:’hue’, getName: function(){ return Dongnaiart } } Dongnaiartame() // ‘hue’ const getNamePerson = Dongnaiartame() getNamePerson() // sai -> not function -> this trỏ tới object window

Cách giải quyết nó :

const getNamePerson = Dongnaiart(person) // hue

Lúc này, sau khi dùng bind thì con trỏ this sẽ trỏ tới person.

Để tránh tình trạng lỗi như trên, trong một vài trường hợp “mập mờ context” như trên, giải pháp sử lí đó là ‘bind’.

Khác với function thông thường, arrow function không có bind vì vậy, không định nghĩa lại this. Do đó, this sẽ tương ứng với ngữ cảnh gần nhất của nó.

Và cũng chính bởi nó không định nghĩa this, nên arrow function không phù hợp làm method của object, vì vậy nếu định nghĩa method của object, function vẫn là sự lựa chọn đúng đắn.

Trong bài chia sẻ phần trước, thì ta cũng không nên dùng arrow function bừa bãi ở mọi nơi, mà cũng nên bind trước rồi gọi function sẽ tránh được việc khi render lại tạo function mới.

Trên đây là những điểm mình đúc kết lại trong thời gian tiếp xúc với javascript về function và arrow function. Mình xin tóm tắt lại như sau:

Về định nghĩa, arrow function và function đều là function tuy nhiên:

Arrow Function:

  • Arrow function là một tính năng mới của ES6, giúp viết code ngắn gọn hơn.
  • Arrow function sử dụng khá ok trong các TH dùng: map, filter, reducer,…
  • Arrow function không có bind.
  • Arrow function không phù hợp là method của object.

Function:

  • Cần chú ý thêm về con trỏ được trỏ tới để định nghĩa lại this bằng ‘bind’.

Tùy vào từng mục đích sử dụng, mà nên lựa chọn function hay arrow function, chứ trước mắt arrow funtion không thể thay thế function được .

Cám ơn các bạn đã đọc!

Nguồn: https://dongnaiart.edu.vn
Danh mục: Tin tức

Lời kết: Trên đây là bài viết Sự khác biệt giữa Arrow Function và Function trong Javascript. Hy vọng với bài viết này bạn có thể giúp ích cho bạn trong cuộc sống, hãy cùng đọc và theo dõi những bài viết hay của chúng tôi hàng ngày trên website: Dongnaiart.edu.vn

Related Posts

Hiểu về tiền thưởng và khuyến mãi tại các casino trực tuyến ở Việt Nam

Hiểu về tiền thưởng và khuyến mãi tại các casino trực tuyến ở Việt Nam

Ngành công nghiệp casino trực tuyến tại Việt Nam ngày càng phát triển mạnh mẽ, đi kèm với đó là hàng loạt chương trình tiền thưởng và…

Hướng Dẫn Nạp Tiền 789club tại pbglink.com

Hướng Dẫn Nạp Tiền 789club tại pbglink.com

Bạn đang tìm kiếm Hướng Dẫn Nạp Tiền 789Club một cách nhanh chóng và an toàn? Bài viết này sẽ giúp bạn thực hiện giao dịch nạp tiền vào…

Hướng dẫn cá cược thể thao cho người mới bắt đầu

Hướng dẫn cá cược thể thao cho người mới bắt đầu

Bạn muốn tìm hiểu mẹo cá cược thể thao tại Five88 chi tiết và lựa chọn nhà cái uy tín? Nhà cái Five88 là điểm đến lý…

Cách nạp tiền Rikvip nhanh chóng và an toàn nhất

Cách nạp tiền Rikvip nhanh chóng và an toàn nhất

Rikvip là một trong những nền tảng giải trí thu hút hàng triệu người chơi tuy nhiên, với những ai mới tham gia, việc thực hiện giao…

Cách chơi Poker tại Sky88 giúp bạn tăng tỷ lệ thắng

Cách chơi Poker tại Sky88 giúp bạn tăng tỷ lệ thắng

Poker là một trong những trò chơi bài hấp dẫn nhất thế giới, thu hút hàng triệu người tham gia nhờ vào sự kết hợp giữa kỹ…

Khám Phá Thế Giới Thể Thao Độc Đáo Cùng Thể Thao 789P – Tương Lai Của Giải Trí

Khám Phá Thế Giới Thể Thao Độc Đáo Cùng Thể Thao 789P – Tương Lai Của Giải Trí

Thể thao 789P là một nền tảng đang thu hút sự chú ý của đông đảo người yêu thể thao tại Việt Nam. Với nhiều dịch vụ…