12/08/2018, 16:33

1 vài điều thú vị có thể bạn chưa biết về javascript ES6

ES6 có rất nhiều điều kỳ diệu dưới đây mình sẽ ví dụ cho các bạn 1 vài điều nhỏ nhặt mà ít người biết tới về ngôn ngữ ảo diệu này. Các bạn hãy chọn lựa sử dụng ES2017 Link online để test https://es6console.com/ hoặc https://codepen.io/ Sử dụng mảng để hoán đổi các giá trị let a = 'world' ...

ES6 có rất nhiều điều kỳ diệu dưới đây mình sẽ ví dụ cho các bạn 1 vài điều nhỏ nhặt mà ít người biết tới về ngôn ngữ ảo diệu này. Các bạn hãy chọn lựa sử dụng ES2017 Link online để test https://es6console.com/ hoặc https://codepen.io/

Sử dụng mảng để hoán đổi các giá trị

let a = 'world', b = 'hello';
[a, b] = [b, a];
console.log(a); // -> hello
console.log(b); // -> world

https://es6console.com/jaqj5l14/ Kết quả trên cho thấy thật kỳ lạ rõ ràng 2 biết a và b đã bị gán đổi giá trị cho nhau

Nếu các bạn muốn tiết kiệm consolog để xem hết các biến thì đây sẽ là một cách tuyệt vời để consolog tất cả giá trị

const a = 5, b = 6, c = 7;
console.log({ a, b, c });
// Kết quả hiển thị
Object {
  a: 5,
  b: 6,
  c: 7
}

Hiển thị như trên sẽ khiến bạn nhìn trực quan hơn với kết quả các biến của mình

Thay vì bạn phải viết dài dòng

function max(arr) {
	return Math.max(...arr);
}

console.log(max([123, 321, 231]));

Một cách tối ưu hơn để sửa đổi lại

const max = (arr) => Math.max(...arr);
console.log(max([123, 321, 231])) // outputs: 321

Thay vì bạn phải sử dụng concatenation để nối các array với cách cũ

const one = ['a', 'b', 'c']
const two = ['d', 'e', 'f']

console.log(one.concat(two));

Bạn có thể sử dụng Spread Operator để làm điều đó một cách trơn tuột

const one = ['a', 'b', 'c']
const two = ['d', 'e', 'f']

console.log([...one, ...two]);
const obj = { a:1, b:2, c:3 }
const cloneObj = {...obj}

console.log(cloneObj)

// Outputs
Object {
  a: 1,
  b: 2,
  c: 3
}

Tuy nhiên điều kỳ diệu là nếu bạn thay đổi đối tượng ban đầu thì bản sao của nó cũng được thay đổi theo và không có chiều ngược lại

const obj = { a:1, b:2, c:3 }
obj.a = 4
const cloneObj = {...obj}

console.log(cloneObj)
// Outputs
Object {
  a: 4,
  b: 2,
  c: 3
}
const obj = { a:1, b:2, c:3 }
const cloneObj = {...obj}
cloneObj.a = 4;

console.log(obj)
// Outputs
Object {
  a: 1,
  b: 2,
  c: 3
}

Với kiểu viết các tham số trong method

const getStuffNotBad = (id, name, age) => {
  console.log({id, name, age});
}
// WTF không muốn truyền "name" thì phải làm sao nhỉ ???
getStuffNotBad(150, 'david', 23)

Cách viết hay và rõ ràng hơn hãy đặt tên rõ rang cho tham số

const getStuffAwesome = ({ id, name, age}) => {
  console.log({id, name, age});
}

// Awesome good -(-
getStuffAwesome({id: 5, age: 23});

ES6 còn rất nhiều điều kỳ diệu, trên đây là một số vấn đề có thể các bạn sẽ gặp phải khi làm việc với nó. Hi vọng bài viết phần nào mang lại kiến thức và giúp ích cho các bạn khi làm việc với javascript.

0