Arrow Function trong Javascript

Sổ tay JavaScript

5.0 (1 đánh giá)
Tạo bởi Lê Châu Cập nhật lần cuối 21:53 12-09-2021 4.004 lượt xem 0 bình luận
Tác giả/Dịch giả: Lê Châu
Học nhanh

Danh sách bài học

Arrow Function trong Javascript

Dẫn nhập

Trong bài viết hôm nay, Kteam sẽ giải thích cho các bạn giới thiệu cho các bạn về Arrow Function.

Nội dung

Để theo dõi bài này tốt nhất, bạn nên xem qua bài:

  • Sổ tay Javascript
  • ECMAScript là gì?
  • Node.js là gì?
  • Cơ chế bất đồng bộ trong Javascript
  • Node.js hoạt động như thế nào?
  • Promise là gì?
  • Async/Await là gì?
  • Var, Let và Const
  • Class trong Javascript

Bài này sẽ giới thiệu những nội dung sau:

  • Giới thiệu về Arrow Function
  • Không tách rời this
  • Không binding arguments
  • Không thể dùng new

Giới thiệu về Arrow Function

Arrow Function là sự thay thế nhỏ gọn của function tiêu chuẩn về mặt cú pháp được giới thiệu từ ES6. Arrow Function rất phù hợp những phương thức không có sử dụng constructors.

Ví dụ:

// Function tiêu chuẩn
const def1 = function() {
  return 'kteam'
}

// Arrow Function
const def2 = () => {
  return 'kteam'
}

// Arrow Function rút gọn hơn khi chỉ có câu lệnh return
const def3 = () => 'kteam'
console.log(def1())
console.log(def2())
console.log(def3())

Ta có thể khai báo tham số trong Arrow Function

const hello = (name) =>  {
  console.log("Hello " + name)
}
hello('Chau')

Không tách rời this

Trước khi Arrow Function ra đời, mỗi function khi định nghĩa this dựa vào cách function được gọi như thế nào.

Nếu một object sau khi được khởi tạo gọi function, thì this trong function đó chính là object đó

function Person() {
  this.age = 12
  this.getAge = function() {
    // this ở đây chính là đối tượng gọi function
    return this.age
  }
}

// khởi tạo đối tượng p
const p = new Person()

// khi gọi getAge, this chính là đối tượng p
console.log(p.getAge())

Tuy nhiên, trong trường hợp sử dụng callback function, function callback không được thực thi trong global object, nên định nghĩa this của function này không phải là đối tượng khởi tạo.

function Person() {
  this.age = 12
  setTimeout(function getAge() {
    // This ở đây là global object
    // nếu được gọi ở Browser thì đây là window
    console.log(this)
    // Global Object không có định nghĩa thuộc tính age
    console.log(this.age)
  }, 2000)
}
const p = new Person()

Nên trước khi Arrow Function ra đời, Lập trình viên thường phải lưu tạm giá trị this vào 1 biến hoặc sử dụng bind

Ví dụ 1: lưu tạm biến this

function Person() {
  this.age = 12
  const that = this
  setTimeout(function getAge() {
    // This ở đây là global object
    // nếu được gọi ở Browser thì đây là window
    console.log(that)
    // Global Object không có định nghĩa thuộc tính age
    console.log(that.age)
  }, 2000)
}
const p = new Person()

Ví dụ 2: Sử dụng bind

function Person() {
  this.age = 12
  this.getAge = function() {
    console.log(this)
    console.log(this.age)
  }
  // Dùng bind để trỏ this trong function gán với tham số trong hàm bind
  setTimeout(this.getAge.bind(this), 2000)
}
const p = new Person()

Công việc đơn giản như vậy nhưng cách xử lý quá lòng vòng. Nên từ khi ra Arrow Function, mọi chuyện đã được giải quyết nhanh gọn.

function Person() {
  this.age = 12
  // This ở đây sẽ gán this trong function Person
  // This trong function Person chính là đối tượng được khởi tạo ra
  setTimeout(() => {
    console.log(this)
    console.log(this.age)
  }, 2000)
}
const p = new Person()

Không binding arguments

Ở function tiêu chuẩn, ta có thể lấy giá trị tham số qua arguments

function def(a, b, c) {
  console.log(arguments[0])
  console.log(arguments[1])
  console.log(arguments[2])
}
def(1,2,3)

Nhưng với Arrow Function, nó không có arguments, nên nếu có sử dụng thì nó hiểu đang lấy giá trị từ biến arguments

const arguments = 'kteam'
const a = () => arguments
console.log(a())

Không thể dùng new

Arrow Function không thể khởi tạo đối tượng, nên chúng ta có thể sử dụng tạo ra các hàm không có mục đích sử dụng hướng đối tượng

const Class = () => {}
const object = new Class()

Kết

Như vậy Kteam đã giới thiệu về Arrow Function trong Javascript

Ở bài tiếp theo, Kteam sẽ giới thiệu cho các bạn Extended Parameter Handling

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Arrow Function trong Javascript dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên likeshare để ủng hộ Kteam và tác giả nhé!


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Nội dung bài viết

Tác giả/Dịch giả

Quan tâm lập trình và lịch sử.

Thích tìm hiểu công nghệ mới

Khóa học

Sổ tay JavaScript

Trong thời gian gần đây, JavaScript luôn là ngôn ngữ rất nhiều lập trình viên và sinh viên IT đang quan tâm và bàn tán vì tính linh hoạt, đa năng và cơ hội nghề nghiệp hấp dẫn mà ngôn ngữ này mang lại. Với sự phát triển nhanh các tính năng mới của JavaScript khiến nhiều người đang nghiên cứu cũng khó nhớ hết những tính năng và hiểu bản chất cụ thể của nó.

Thông qua khóa học SỔ TAY JAVASCRIPT, đây chỉ là những ghi chép mà Kteam tổng hợp như để có thể nghiên cứu lại khi cần thiết và giúp các bạn học hiểu được những tính năng JavaScript hiện nay.

Đánh giá

Anhthu6023789 đã đánh giá 14:23 16-08-2023

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
Không có video.