Một số khái niệm tăng kỹ năng JavaScript của bạn

2616

Hiện nay thì JavaScript là một ngôn ngữ rất phổ biến và không thể thiếu trong các ứng dụng web. Môi trường JavaScript đã trở nên khổng lồ. Nó có hệ sinh thái của riêng nó với thư viện, frameworks, công cụ, quản lý package và các ngôn ngữ mới để biên dịch ra JavaScript như React, Vue,… Trong bài viết này mình giới thiệu một số khái niệm tăng khả năng JavaScript, sẽ giúp bạn dễ dàng làm việc với JavaScript cũng như dễ dàng tiếp cận với các thư viện, frameworks,…

Destructuring Assignment

Destructuring Assignment là cú pháp cho phép lấy dữ liệu được lưu trữ bên trong Arrays hoặc Objects và gán chúng cho các biến riêng biệt
Ví dụ Destructuring Assignment với Object

 

Nếu chúng ta muốn khi lấy properties của object với tên khác, chúng ta có thể đặt lại bằng cách như sau:

 

Destructuring Assignment còn được sử dụng lấy các tham số được truyền cho một hàm. Ở trong ReactJs cũng thường xuyên gặp và được sử dụng rất nhiều

 

Cú pháp Spread

Cú pháp spread đơn giản được biểu diễn bởi dấu 3 chấm: …
Cú pháp Spread cho phép duyệt qua các phần tử và truyền vào phương thức như các đối số có nghĩa là cho phép chuyển đổi một chuỗi thành nhiều argument (trong trường hợp gọi với hàm) hoặc thành nhiều phần tử (cho array)

 

Cú pháp:

  • Cho việc gọi hàm:

 

  • Cho array literals hoặc strings:

 

  • Cho object literals:

 

Cú pháp Rest

Rest cho phép chúng ta biểu diễn số lượng đối số không xác định dưới dạng một mảng.

 

Cú pháp:

 

Array Methods

Trong JavaScript thì để thao tác với mảng rất thuận tiện vì JavaScript đã cung cấp cho chúng ta các array methods giúp chúng ta thực hiện biến đổi dữ liệu theo cách chúng ta cần.
Trong bài viết này mình giới thiệu với các bạn một số phương thức.
Đầu tiên là: map, filter, reduce. Cả 3 phương thức này đều là những cách hữu ích để chuyển đổi một mảng hoặc trả về một giá trị và có nhiều bạn đã nhầm lẫn các phương thức này. Vậy các phương thức này hoạt động và khác nhau như thế nào

map

  • Tạo ra một mảng mới với kết quả được xử lý trong hàm cho mỗi phần phần tử mảng
  • Không thực thi hàm cho các phần tử mảng không có giá trị
  • Phương thức này không thay đổi mảng ban đầu

 

filter

  • Tạo ra một mảng chứa đầy tất cả các phần tử mảng qua điều kiện kiểm tra được xử lý trong hàm
  • Không thực thi hàm cho các phần tử mảng không có giá trị
  • Phương thức này không thay đổi mảng ban đầu

 

reduce

  • Giảm mảng thành một giá trị duy nhất.
  • Thực thi một hàm được cung cấp cho mỗi giá trị của mảng (từ trái sang phải)
  • Giá trị trả về của hàm được lưu trữ trong bộ tích lũy
  • Không thực thi hàm cho các phần tử mảng không có giá trị
  • Phương thức này không thay đổi mảng ban đầu

 

find

  • Trả về giá trị của phần tử đầu tiên trong một mảng qua điều kiện kiểm tra được xử lý trong hàm
  • Nếu nó tìm thấy một phần tử mảng trong đó hàm trả về một giá trị đúng, find () trả về giá trị của phần tử mảng đó (và không kiểm tra các giá trị còn lại). Nếu không, nó trả về không xác định

 

findIndex

  • Trả về chỉ mục của phần tử đầu tiên trong một mảng qua điều kiện kiểm tra được xử lý trong hàm
  • Nếu nó tìm thấy một phần tử mảng trong đó hàm trả về một giá trị thực, findIndex () trả về chỉ mục của phần tử mảng đó (và không kiểm tra các giá trị còn lại). Nếu không, nó trả về -1

 

indexOf

  • Tìm kiếm mảng trong mảng theo điều kiện được chỉ định và trả về vị trí của nó.
  • Tìm kiếm sẽ bắt đầu tại vị trí đã chỉ định hoặc ở đầu nếu không có vị trí bắt đầu nào được chỉ định và kết thúc tìm kiếm ở cuối mảng.
  • Trả về -1 nếu không tìm thấy theo điều kiện. Nếu theo điều kiện item có mặt nhiều lần, phương thức indexOf trả về vị trí xuất hiện đầu tiên

 

push

  • Thêm phần tử mới vào cuối một mảng và trả về độ dài mới

 

pop

  • Loại bỏ phần tử cuối cùng của một mảng và trả về phần tử đó.

 

shift

  • Loại bỏ phần tử đầu tiên của một mảng và trả về phần tử đầu tiên đó

 

unshift

  • Thêm các phần tử mới vào đầu một mảng và trả về độ dài mới.

 

Generators

  • Generator là một object được trả về bởi một generator function, nó phù hợp với cả iterable protocol và iterator protocol.
  • Generator function là một function, có khả năng tạm ngưng thực thi trước khi hàm kết thúc, và có thể tiếp tục chạy ở 1 thời điểm khác. Giá trị của biến trong các lần gọi được lưu lại trong các lần gọi tiếp theo
  • Phương thức:
    • Generator.prototype.next():
      Trả về giá trị yielded, được khai báo qua câu lệnh yield.
    • Generator.prototype.return():
      Trả về giá trị và kết thúc generator.
    • Generator.prototype.throw():
      Throw lỗi vào generator (đồng thời kết thúc generator, trừ khi được bắt lại trong generator đó).

 

Identity Operator (===) vs Equality Operator (==)

Toán tử == sẽ thực hiện chuyển đổi kiểu dữ liệu trước khi so sánh các giá trị trong khi toán tử === sẽ không thực hiện bất kỳ chuyển đổi loại nào trước khi so sánh

 

Callback Functions

  • Là một function được truyền vào một function khác dưới dạng tham số, và được gọi trong function đó.

 

Tài liệu tham khảo

https://developer.mozilla.org/

Kết luận

Trong bài viết này mình đã giới thiệu tới các bạn một số khái niệm có thể giúp bạn tăng khả năng JavaScript của mình. Cảm ơn các bạn đã theo dõi bài viết ❤️

TopDev via Viblo

SHARE