- vừa được xem lúc

ES6 JavaScript: Tổng hợp các tính năng nổi bật

0 0 5

Người đăng: Nguyen Le Than

Theo Viblo Asia

Chúc mừng năm mới! Chúc cho mọi người một năm mới an khang, thịnh vượng và hạnh phúc. Mong rằng mọi điều tốt lành sẽ đến với bạn và gia đình. Chúc cho mọi dự định và ước mơ của bạn được thực hiện, và mọi nỗ lực của bạn đều được đền đáp. Hãy tận hưởng những niềm vui và hạnh phúc trong năm mới này nhé!

Mở đầu

ES là một thuật ngữ được viết tắt của ECMAScript. ECMAScript được tạo ra để chuẩn hóa JavaScript và ES6 là phiên bản thứ 6 của ECMAScript, nó được xuất bản vào năm 2015 và còn được gọi là ECMAScript 2015. Các phiên bản ES đã ra mắt bao gồm: ES6, ES7, ES8, ES9, ES10, ES11, ES12, ES13,...

Ở những phiên bản này đều sẽ có những cập nhật về các tính năng, và phiên bản có sự thay đổi nổi bật nhất là ES6. Sau đây mình sẽ liệt kê những sự thay đổi chính ở phiên bản này.

Nội dung

Arrow function

Có cú pháp ngắn gọn hơn so với định nghĩa function truyền thống.

Ví dụ:

// Function expression
const add = function(a, b) { return a + b;
}; // Arrow function
const add = (a, b) => a + b;

Classes

Bạn có thể sử dụng từ khóa class để khởi tạo một Class từ phiên bản này.

Ví dụ:

class Animal { constructor(name) { this.name = name; } speak() { console.log(`${this.name} makes a sound.`); }
} class Dog extends Animal { speak() { console.log(`${this.name} barks.`); }
}

Enhanced Object Literals

Giúp cho việc khai báo một object ngắn gọn hơn, không bị lặp lại.

Ví dụ:

let name = 'Join'
let age = 18
let getName = () => name // Cú pháp cũ để tạo một object const student = { name: name, age: age, getName: getName } // Cú pháp mới áp dụng Enhanced Object Literals
// Nhìn gọn gàng hơn phải không nào const student = { name, age, getName, } //

Ngoài ra, bạn cũng có thể tạo key động cho object bằng cú pháp [ ]

Ví dụ:

let key = 'name' let student = { [key + '1']: 'Than'
} console.log(student) // { name1: Than }

Template Literals

Được sử dụng để nối chuỗi thông qua cú pháp ``

Ví dụ:

 let name = 'Than' let fullName = `Nguyen Le ${name}` //Nguyen Le Than

Destructuring

Destructuring cho phép chúng ta lấy giá trị của một mảng hoặc thuộc tính của object thành những biến riêng biệt.

Ví dụ:

let array = ["John", "Smith"] let [firstName, surname] = array console.log(firstName) // John
console.log(surname) // Smith

let và const

Chắc hẳn bạn đã sử dụng letconst cho việc khai báo biến, tới thời điểm hiện tại letconst đang được thay thế var trong việc khai báo biến.

let x = 10;
const PI = 3.14;

Rest Parameters và Spread Operator

Rest parameters cho phép bạn truyền một số lượng tham số không xác định vào hàm. Ví dụ:

// Hàm sum nhận vào một số lượng number không xác định.
const sum = (...numbers) => numbers.reduce((acc, num) => acc + num, 0); // Gọi hàm sum như sau
sum(1,2,10,11,12)

Spread Operator cho phép bạn mở rộng một array hoặc object một cách ngắn gọn, hoặc có thể hiểu Spread Operator dùng để rải các phần tử của một đối tượng này sang một đối tượng khác. Ví dụ:

const arr = [1, 2, 3];
// Sử dụng Spread để tạo ra newArr bao gồm các phần tử của arr và thêm hai phần tử 4, 5
const newArr = [...arr, 4, 5];
console.log(newArr); // [1, 2, 3, 4, 5]

Default Parameters

Bạn có thể thêm một giá trị mặc định cho tham số của hàm, và tham số này sẽ trở thành optional ( có thể truyền hoặc không truyền tham số )

// Hàm tính diện tích hình chữ nhật
function calculateRectangleArea(width = 5, height = 10) { return width * height;
} // Gọi hàm mà không truyền tham số
const area1 = calculateRectangleArea(); // width = 5, height = 10
console.log(area1); // Kết quả: 50 // Gọi hàm và chỉ truyền một tham số
const area2 = calculateRectangleArea(8); // width = 8, height = 10
console.log(area2); // Kết quả: 80 // Gọi hàm và truyền cả hai tham số
const area3 = calculateRectangleArea(3, 6); // width = 3, height = 6
console.log(area3); // Kết quả: 18

Promises

Cùng với callback, promises là cơ chế mới để xử lý bất đồng bộ.

Ví dụ:

const fetchData = () => { return new Promise((resolve, reject) => { // Nếu thành công gọi resolve if (success) { resolve(data); } else { // Nếu thất bại gọi tới reject reject(error); } });
}; // Sử dụng hàm fetchData như thế nào?
fetchData()
.then((data) => console.log(data) // Data nhận được từ resolve ở trên)
.catch((error) => console.log(error) // Error nhận được từ reject ở trên)

Tổng kết

Bài viết này mình đã liệt kê một số sự thay đổi nổi bật nhất ở phiên bản ES6, và vẫn còn nhiều tính năng khác được thêm vào phiên bản này. Nếu các bạn thấy hay thì hãy upvote cho mình nhé!!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Imports và Exports trong JavaScript ES6

. Giới thiệu. ES6 cung cấp cho chúng ta import (nhập), export (xuất) các functions, biến từ module này sang module khác và sử dụng nó trong các file khác.

0 0 93

- vừa được xem lúc

Phân biệt kiểu biến var, let, và const trong JavaScript

1. Giới Thiệu. ES6 (viết tắt của ECMAScript 6) là một tập hợp các kỹ thuật nâng cao của Javascript. ECMAScript do hiệp hội các nhà sản xuất máy tính Châu Âu đề xuất làm tiêu chuẩn của ngôn ngữ Javascript.

0 0 48

- vừa được xem lúc

Hãy sử dụng ESLint cho dự án của bạn!

. Bài viết gốc: https://manhhomienbienthuy.bitbucket.io/2018/May/20/we-should-use-eslint-in-project.html (đã xin phép tác giả ).

0 0 63

- vừa được xem lúc

Object Literals nâng cao với ES6

Trong bài viết này chúng ta xem xét những gì có thể xảy ra với các Object Literals trong JavaScript, đặc biệt là theo các bản cập nhật ECMAScript gần đây. Khả năng tạo các đối tượng JavaScript sử dụng ký hiệu chữ rất mạnh mẽ.

0 0 22

- vừa được xem lúc

Một số mẹo vặt "hay ho" của ES6 có thể bạn chưa biết - Phần 4

Xin chào, ở 3 bài trước của series "Một số mẹo vặt "hay ho" của ES6", mình đã chia sẻ 1 số tips/tricks nhỏ với ES6, hy vọng ít nhiều nó sẽ có ích với các bạn khi áp dụng vào thực tế. Hôm nay, xin mời các bạn theo dõi phần 4 của series này.

0 0 30

- vừa được xem lúc

Tìm hiểu về JavaScript Module

Chắc hẳn ai trong chúng ta cũng đã từng sử dụng nhiều công cụ như là webpack, rollup, grunt, browserify,...; sử dụng những cú pháp module quen thuộc của CommonJS, AMD hay là ES6, nhưng có lẽ là chưa thực sự nhiều người đã nắm rõ về quá trình hình thành và mục đích tại sao chúng ta có những công cụ n

0 0 31