Phiên bản JavaScript mới nhất chỉ có 2 tính năng mới. Đây là cách chúng hoạt động.

Hãy nói về phiên bản mới nhất của JavaScript: ECMAScript 2016 (thường được gọi là ES7). ES7 mang hai tính năng mới: Array.prototype.includes()và các nhà điều hành mũ mới: **.

Array.prototype.includes ()

Đã qua rồi cái thời mà chúng ta từng .indexOf()biết liệu một phần tử có tồn tại trong một mảng hay không.

Từ khóa là "tồn tại."

.indexOf() cũng tốt nếu chúng ta muốn biết một phần tử nhất định xuất hiện ở chỉ mục nào.

Nhưng nếu mục tiêu của chúng ta là biết liệu một phần tử đã cho có tồn tại trong một mảng hay không thì đó .indexOf()không phải là lựa chọn tốt nhất. Và lý do rất đơn giản: Khi truy vấn sự tồn tại của một thứ gì đó, chúng ta mong đợi một giá trị boolean, không phải một số .

Array.prototype.includes()làm chính xác điều đó. Nó xác định xem một phần tử nhất định có tồn tại trong một mảng hay không, trả về truenếu nó tồn tại, falsengược lại.

Vào đặc điểm kỹ thuật

Array.prototype.includes ( searchElement [ , fromIndex ] )
  • searchElement - phần tử cần tìm kiếm.
  • fromIndex(tùy chọn) - chỉ mục để bắt đầu tìm kiếm.

Đi sâu vào đặc điểm kỹ thuật có cảm giác như đang tìm kiếm sức mạnh.

Đặc điểm kỹ thuật cho biết:

Hãy đi từng bước và cố gắng hiểu thông số kỹ thuật bằng các ví dụ.

  1. Sự khác biệt ở đây là vị trí của phần tử 4. Bởi vì ví dụ đầu tiên của chúng tôi đặt 4 ở vị trí cuối cùng, bao gồm sẽ tìm kiếm toàn bộ mảng. Theo đặc tả .includes()trả về ngay lập tức sau khi tìm thấy searchElement. Điều này làm cho hoạt động thứ hai của chúng tôi nhanh hơn nhiều.
  2. Sự khác biệt lớn với thuật toán SameValueZero so với so sánh bình đẳng nghiêm ngặt (được sử dụng bởi .indexOf()) là nó cho phép phát hiện các phần tử NaN .
  3. Nó trả về boolean truekhi phần tử được tìm thấy và falsengược lại. Kết quả là không có thêm chỉ mục?
  4. Ngược lại với .indexOf(), .includes()không bỏ qua các phần tử mảng bị thiếu. Thay vào đó, nó coi chúng là các giá trị không xác định .

Bạn đang bắt đầu cảm thấy sức mạnh?

Chúng tôi thậm chí còn chưa chạm vào fromIndex.

Hãy kiểm tra thông số kỹ thuật:

Đối số thứ hai tùy chọn fromIndexđược mặc định 0là (nghĩa là toàn bộ mảng được tìm kiếm). Nếu nó lớn hơn hoặc bằng độ dài của mảng, giá trị false được trả về, tức là mảng sẽ không được tìm kiếm. Nếu nó là số âm, nó được sử dụng làm phần từ cuối mảng để tính toán fromIndex. Nếu chỉ số được tính nhỏ hơn 0, toàn bộ mảng sẽ được tìm kiếm.
  1. Nếu không fromIndexđược cung cấp, giá trị mặc định của 0được lấy và toàn bộ mảng được tìm kiếm.
  2. .includes()ngay lập tức trả về false khi giá trị của fromIndexlớn hơn độ dài của mảng.
  3. Khi nào fromIndexlà âm, thì giá trị của nó được tính là array.length — fromIndex. Điều này đặc biệt hữu ích khi tìm kiếm trên các phần tử cuối cùng. Ví dụ, fromIndex = -5cũng giống như tìm kiếm trên 5 phần tử cuối cùng.
  4. Để tránh bị .includes()vỡ khi fromIndexgiá trị được tính toán thấp hơn 0, toàn bộ mảng được tìm kiếm. Tôi thà phá?

OK - một tính năng mới cuối cùng…

The Exponential Operator (**)

Chúng tôi đã chờ đợi ngày chúng tôi có thể chơi với cấp số nhânnhững con số như chúng ta chơi với các phép cộng, trừ, nhân, chia.

Chà, ngày đó đến rồi.

Toán tử **hoạt động giống hệt như Math.pow(). Nó trả về kết quả của việc nâng toán hạng đầu tiên lên lũy thừa của toán hạng thứ hai (ví dụ x ** y).

Đó là nó!

Bây giờ bạn có sức mạnh của ES7 ! Sử dụng nó tốt!

Nhờ vào ?

  • 2ality.com bởi Axel Rauschmayer
  • Đặc tả ngôn ngữ ECMAScript® 2016
  • Gửi đến tất cả những người hâm mộ He-Man
  • freeCodeCamp để xuất bản ❤️

Hãy nhớ xem các bài viết của tôi về ES6:

Hãy cùng khám phá Máy phát điện ES6

Trình tạo, hay còn gọi là triển khai các tệp lặp. medium.freecodecamp.org Ồ Có! Async / Await

async / await là cú pháp JavaScript mới để khai báo một hàm không đồng bộ. medium.freecodecamp.org