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

Những cái mới của javascript hiện đại

0 0 9

Người đăng: ngocyen

Theo Viblo Asia

  • ECMAScript 2015 (còn được gọi là ES6) là một bản cập nhật lớn cho Javascript kể từ ES5, được chuẩn hóa vào năm 2009.
  • Kể từ đó, Javascript đã đưa ra các bản cập nhật gia tăng hàng năm.
  • Các bản cập nhật từ ES6 trở lên thường được gọi là Javascript hiện đại.
  • Hôm nay chúng ta hãy xem javascript mới có những cái gì?

Ký tự

  • Các ký tự cho phép nhúng các biểu thức vào chuỗi với cú pháp rõ ràng hơn.

  • Các ký tự được bao bởi ký tự backtick thay vì dấu ngoặc kép hoặc đơn.

    // ES5
    let name = "Yen"
    let msg = "Hello," + " " + name + "." // Hello Yến // ES6
    let name = "Yen"
    let msg = `Hello, ${name}.` // 

Arrow Functions

  • Là một thay thế nhỏ gọn về mặt cú pháp cho một function thông thường. Nó làm cho code của bạn dễ đọc và có cấu trúc hơn.

    // ES5
    const isEven = function (num) { return num % 2 === 0;
    } // ES6
    const isEven = num => num % 2 === 0;
    
  • Ngoài ra, bạn có thể sử dụng Arrow Functions với cái hàm sau: map, filter, reduce

    const nums = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    const odds = nums.filter(n => n % 2 === 1);
    console.log(nums); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
    console.log(odds); // [1, 3, 5, 7, 9]
    
  • Việc xử lý this cũng khác ở arrow function với các hàm thông thường. Ở các hàm thông thường, this được đại diện như một object được gọi cho hàm.

  • Với arrow function this được hiểu là object đã được xác định

Default Parameters

  • Nó cho phép các tham số được đặt tên, khởi tạo với các giá trị mặc định nếu không có giá trị nào hoặc undefined

    // ES5
    function multiply(a, b) { b = typeof b !== 'undefined' ? b : 1; return a * b;
    }
    console.log(multiply(5, 2)); // 10
    console.log(multiply(5)); // 5
    // ES6
    function multiply(a, b = 1) { return a * b;
    }
    console.log(multiply(5, 2)); // 10
    console.log(multiply(5)); // 5
    

Spread (…)

  • Nó cho phép một biểu thức có thể lặp lại, chẳng hạn như mảng hoặc chuỗi được mở rộng

    Spread cho function

     const nums = [1, 3, 2, 7, 5]; Math.max(nums); // NaN // Use spread! Math.max(...nums); // 7
    
    • Spread(...) đã mở rộngmảng 3 phần tử thành 3 tham số riêng biệt.

    Spread cho mảng

    • Tạo một mảng mới bằng cách sử dụng một mảng hiện có.
    const nums1 = [1, 2, 3];
    const nums2 = [4, 5, 6];
    [...nums1, ...nums2] // [1, 2, 3, 4, 5, 6]
    

    Spread cho object

    • Sao chép các thuộc tính từ một object này vào một object khác
    const name = {firstname: "piyush", lastname: "sinha"};
    const fullAddress = {...address, country: "india"};
    // {city: "mumbai", state: "maharashtra", country: "india"}
    const details = {...name, ...fullAddress};
    // {firstname: "piyush", lastname: "sinha", city: "mumbai", state: "maharashtra", country: "india"}
    

Destructuring

  • là một cú pháp cho phép tách dữ liệu được lưu trữ bên trong Objects hoặc Arrays và gán chúng cho các biến riêng biệt.

    Array Destructuring

    const raceResults = ["Jazz", "Ibtesam", "Farhaz", "Kunal"];
    const [gold, silver, bronze] = raceResults;
    gold; // "Jazz"
    silver; // "Ibtesam"
    bronze; // "Farhaz"
    const [fastest, ...everyoneElse] = raceResults;
    fastest; // "Jazz"
    everyoneElse; // ["Ibtesam", "Farhaz", "Kunal"]
    

    Object Destructuring

    • cho phép chúng ta gán property value của một object cho các biến tương ứng
    const runner = { first: "Piyush", last: "Sinha", country: "India"
    }
    const {first, last, country} = runner;
    first; // "Piyush"
    last; // "Sinha"
    country; // "India"
    

    Parameters Destructuring

    -khi chúng ta thực thi một function với các arguments, trên thực tế các arguments đó sẽ được gán cho các parameters được định nghĩa trong function definition

    const fullName = ({first, last}) => { return `${first} ${last}`
    }
    const runner = { first: "Piyush", last: "Sinha", country: "India"
    }
    fullName(runner); // "Piyush Sinha"
    

Vòng lặp trong mảng và object

vòng lặp for... of

  • cách tốt và dễ dàng để lặp lại các mảng.

     const gamers = ["Piyush", "Jazz", "Ibtesam", "Farhaz", "Kunal"]; for(const player of gamers) { console.log(player); } // Piyush // Jazz // Ibtesam // Farhaz // Kunal
    

Vòng lặp for…in

  • cách tốt và dễ dàng để lặp lại tất cả các thuộc tính có thể liệt kê của một đối tượng.
    const scores = { piyush: 80, jazz: 86, ibtesam: 92, farhaz: 90, kunal: 88
    }
    for(const score in scores) { console.log(scores[score]);
    }
    // 80
    // 86
    // 92
    // 90
    // 88
    

Promises

  • Promise là một đối tượng sẽ được trả về một giá trị trong tương lai.
  • Promise là một cơ chế trong JavaScript giúp bạn thực thi các hàmbất đồng bộ mà không rơi vào callback hell hay pyramid of doom, là tình trạng các hàm callback lồng vào nhau ở quá nhiều tầng.

cú pháp: let promise = new Promise(function(resolve, reject) { // do something });

  • Hàm khởi tạo chỉ nhận một đối số là hàm callback. Hàm callback nhận hai đối số, resolve, reject. Khi chạy hàm sẽ thu được kết quả, dù sớm hay muộn

  • resolve(value): nếu hàm kết thúc thành công, sẽ trả về giá trị

  • reject(error): nếu một lỗi xảy ra, sẽ trả về đối tượng lỗi.

Promise được trả về bởi phương thức khởi tạo **new Promise **có các thuộc tính nội bộ sau:

  1. khởi tạo state- ban đầu là pending sau đó chuyển thành resolve(khi thành công và trả về giá trị), reject khi call thất bại

  2. result(kết qủa) — ban đầu undefined, sau giá trị thay đổi khi call thành công resolve và lỗi reject khi call thất bại

    const fakeRequestPromise = (url) => { return new Promise((resolve, reject) => { const delay = Math.floor(Math.random()*(4500)) + 500; setTimeout(() => { if(delay>4000) { reject("Connection Timeout!"); } else { resolve(`Here is your fake data from ${url}`); } }, delay) })
    }
    
  • Tôi sử dụng độ trễ ngẫu nhiên bằng setTimeout () để yêu cầu API trả về thành công hay thất bại.

  • Nếu delay lớn hơn 4000 thì reject("Connection Timeout!");

  • Và nếu delay nhỏ hơn 4000 thì sẽ trả về giá trị resolve(Here is your fake data from ${url});

  • Khi promise ở trạng thái resolved, một hành động .then và .catch

    const request = fakeRequestPromise("www.viblo.asia");
    request .then(() => { console.log("Promise Resolved"); console.log("IT WORKED !!!"); }) .catch(() => { console.log("Promise Rejected"); console.log("OH NO, ERROR !!!"); })
    
  • Promise là lựa chọn lý tưởng để xử lý các hàm bất đồng bộ một cách đơn giản nhất. Chúng có thể xử lý nhiều hàm bất đồng bộ một cách dễ dàng và cung cấp khả năng xử lý lỗi tốt hơn so với callback

Kết luận:

  • Còn rất nhiều javascript hiện đại, tôi sẽ giới thiệu ở những bài tiếp theo. cảm ơn các bạn đã đọc

References

Bình luận

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

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

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 528

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

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 436

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

Một số phương thức với object trong Javascript

Trong Javascript có hỗ trợ các loại dữ liệu cơ bản là giống với hầu hết những ngôn ngữ lập trình khác. Bài viết này mình sẽ giới thiệu về Object và một số phương thức thường dùng với nó.

0 0 158

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

Tìm hiểu về thư viện axios

Giới thiệu. Axios là gì? Axios là một thư viện HTTP Client dựa trên Promise.

0 0 149

- 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 113

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

Bài toán đọc số thành chữ (phần 2) - Hoàn chỉnh chương trình dưới 100 dòng code

Tiếp tục bài viết còn dang dở ở phần trước Phân tích bài toán đọc số thành chữ (phần 1) - Phân tích đề và những mảnh ghép đầu tiên. Bạn nào chưa đọc thì có thể xem ở link trên trước nhé.

0 0 249