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ề true
nếu nó tồn tại, false
ngượ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ụ.
- 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ấysearchElement
. Điều này làm cho hoạt động thứ hai của chúng tôi nhanh hơn nhiều. - 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 . - Nó trả về boolean
true
khi phần tử được tìm thấy vàfalse
ngược lại. Kết quả là không có thêm chỉ mục? - 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ọnfromIndex
được mặc định
0
là (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
bù 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.
- Nếu không
fromIndex
được cung cấp, giá trị mặc định của0
được lấy và toàn bộ mảng được tìm kiếm. .includes()
ngay lập tức trả về false khi giá trị củafromIndex
lớn hơn độ dài của mảng.- Khi nào
fromIndex
là â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 = -5
cũng giống như tìm kiếm trên 5 phần tử cuối cùng. - Để tránh bị
.includes()
vỡ khifromIndex
giá 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