Chatbox

Các bạn vui lòng dùng từ ngữ lịch sự và có văn hóa,sử dụng Tiếng Việt có dấu chuẩn. Chúc các bạn vui vẻ!
30/04/2021 23:04 # 1
buiducduong
Cấp độ: 22 - Kỹ năng: 1

Kinh nghiệm: 7/220 (3%)
Kĩ năng: 0/10 (0%)
Ngày gia nhập: 25/09/2020
Bài gởi: 2317
Được cảm ơn: 0
Những cái mới của javascript hiện đại(phần 1)


  • 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: mapfilterreduce
  • 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 mng

  • 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 lp trong mng và object

vòng lp 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 lp 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
  1. const fakeRequestPromise = (url) => {
  2.   return new Promise((resolve, reject) => {
  3.     const delay = Math.floor(Math.random()*(4500)) + 500;
  4.     setTimeout(() => {
  5.       if(delay>4000) {
  6.         reject("Connection Timeout!");
  7.       } else {
  8.         resolve(`Here is your fake data from ${url}`);
  9.       }
  10.     }, delay)
  11.   })
  12. }
  • 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 lun:

  • 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

 

 




 
Copyright© Đại học Duy Tân 2010 - 2024