Các toán tử mới nhất thêm vào JavaScript (ES6/ES2018/ES2020): Spread Operator (...) và Rest Parameter (...). Cùng ký hiệu nhưng ngữ cảnh khác nhau.
Rest Operator (Rest Parameter)
Thu gom nhiều argument thành array. ES6. Ký hiệu ... trước tham số cuối cùng.
Ví dụ
<html>
<body>
<script>
function addition(...numbers) {
var res = 0;
numbers.forEach(function(number) {
res += number;
});
return res;
}
document.write(addition(3)); // 3
document.write(addition(9,10,11,12,13)); // 55
</script>
</body>
</html>
Spread Operator
Cho phép expression expand thành nhiều argument, element, variable...
Ví dụ
<html>
<body>
<script>
var a = [10, 20];
var b = "rank";
var c = [30, "points"];
var d = "run";
// concat method (cũ)
e = a.concat(b, c, d);
// spread operator (ES6)
f = [...a, b, ...c, d];
document.write(e); // 10,20,rank,30,points,run
document.write("<br>" + f); // 10,20,rank,30,points,run
</script>
</body>
</html>
Các toán tử mới khác (ES2020+)
- Optional Chaining (
?.):obj?.prop?.method()- tránh lỗi null/undefined. - Nullish Coalescing (
??):value ?? default- fallback chỉ khi null/undefined. - Logical Assignment (
??=,||=,&&=):x ??= default. - Private Class Fields (
#field):class C { #private = 1; }.
Tóm tắt
| Operator | Version | Mô tả |
|---|---|---|
... (spread) | ES6 | Trải array/object thành elements |
... (rest) | ES6 | Gom elements thành array |
?. | ES2020 | Optional chaining |
?? | ES2020 | Nullish coalescing |
??= | ES2021 | Nullish assignment |
# | ES2022 | Private class field |