20 Kỹ thuật viết tắt trong JavaScript sẽ tiết kiệm thời gian của bạn

Các kỹ thuật viết tắt của bất kỳ ngôn ngữ lập trình nào giúp bạn viết mã rõ ràng và tối ưu hơn, đồng thời cho phép bạn đạt được mục tiêu của mình với ít mã hóa hơn. Hãy thảo luận từng kỹ thuật viết tắt của JavaScript.

1. Khai báo biến

//Longhand 
let x; 
let y = 20; 

//Shorthand 
let x, y = 20;

2. Gán giá trị cho nhiều biến

Chúng ta có thể gán giá trị cho nhiều biến trong một dòng bằng cách cấu trúc mảng.

//Longhand 
let a, b, c; 
a = 5; 
b = 8; 
c = 12;
 
//Shorthand 
let [a, b, c] = [5, 8, 12];

3. Toán tử bậc ba

Chúng ta có thể lưu 5 dòng code ở đây với toán tử bậc ba (có điều kiện).

//Longhand 
let marks = 26; 
let result; 
if (marks >= 30){
 result = 'Pass'; 
} else { 
 result = 'Fail'; 
} 

//Shorthand 
let result = marks >= 30 ? 'Pass' : 'Fail';

4. Gán giá trị mặc định

Chúng ta có thể sử dụng toán tử OR(||) để gán giá trị mặc định cho một biến trong trường hợp giá trị mong đợi được tìm thấy là sai.

//Longhand 
let imagePath; 
let path = getImagePath(); 
if(path !== null && path !== undefined && path !== '') { 
  imagePath = path; 
} else { 
  imagePath = 'default.jpg'; 
} 

//Shorthand 
let imagePath = getImagePath() || 'default.jpg';

5. Toán tử AND(&&)

Nếu bạn chỉ gọi một hàm nếu một biến là true, thì bạn có thể sử dụng AND(&&) để thay thế cho điều này.

//Longhand 
if (isLoggedin) {
 goToHomepage(); 
} 

//Shorthand 
isLoggedin && goToHomepage();

6. Hoán đổi hai biến

Để hoán đổi hai biến, chúng ta thường sử dụng một biến thứ ba. Chúng ta có thể hoán đổi hai biến một cách dễ dàng với phép gán cấu trúc mảng.

let x = 'Hello', y = 55; 
//Longhand 
const temp = x; 
x = y; 
y = temp; 

//Shorthand 
[x, y] = [y, x];

7. Arrow Function

//Longhand 
function add(num1, num2) { 
   return num1 + num2; 
} 

//Shorthand 
const add = (num1, num2) => num1 + num2;

Reference: JavaScript Arrow function

8. Ký tự mẫu mẫu

Chúng ta thường sử dụng toán tử + để nối các giá trị chuỗi với các biến. Với các ký tự mẫu của ES6, chúng ta có thể làm điều đó theo cách đơn giản hơn.

//Longhand 
console.log('You got a missed call from ' + number + ' at ' + time); 

//Shorthand 
console.log(`You got a missed call from ${number} at ${time}`);

9. Chuỗi nhiều dòng

Đối với chuỗi nhiều dòng, chúng ta thường sử dụng toán tử + với chuỗi thoát dòng mới (\n). Chúng ta có thể làm điều đó theo cách dễ dàng hơn bằng cách sử dụng dấu gạch ngược (`)

//Longhand 
console.log('JavaScript, often abbreviated as JS, is a\n'
+ 'programming language that conforms to the \n' + 
'ECMAScript specification. JavaScript is high-level,\n' + 
'often just-in-time compiled, and multi-paradigm.' ); 

//Shorthand 
console.log(`JavaScript, often abbreviated as JS, is a programming 
language that conforms to the ECMAScript specification. JavaScript is 
high-level, often just-in-time compiled, and multi-paradigm.`);

10. Kiểm tra nhiều điều kiện

Để đối sánh nhiều giá trị, chúng ta có thể đặt tất cả các giá trị trong mảng và sử dụng phương thức indexOf() hoặc include().

//Longhand 
if (value === 1 || value === 'one' || value === 2 || value === 'two') { 
     // Execute some code 
} 

// Shorthand 1
if ([1, 'one', 2, 'two'].indexOf(value) >= 0) { 
    // Execute some code 
}
// Shorthand 2
if ([1, 'one', 2, 'two'].includes(value)) { 
    // Execute some code 
}

11. Gán thuộc tính object

Nếu tên biến và tên khóa đối tượng giống nhau thì chúng ta có thể đề cập đến tên biến trong các ký tự đối tượng thay vì cả khóa và giá trị. JavaScript sẽ tự động đặt khóa giống như tên biến và gán giá trị dưới dạng giá trị biến.

let firstname = 'Amitav'; 
let lastname = 'Mishra'; 
//Longhand 
let obj = {firstname: firstname, lastname: lastname}; 

//Shorthand 
let obj = {firstname, lastname};

12. Chuyển chuỗi thành một số

Có sẵn các phương thức như parseIntparseFloat để chuyển đổi một chuỗi thành số. Chúng ta cũng có thể làm điều này bằng cách chỉ cần cung cấp một toán tử một ngôi (+) trước giá trị chuỗi.

//Longhand 
let total = parseInt('453'); 
let average = parseFloat('42.6'); 

//Shorthand 
let total = +'453'; 
let average = +'42.6';

13. Lặp lại một chuỗi nhiều lần

Để lặp lại một chuỗi trong một số thời gian nhất định, bạn có thể sử dụng vòng lặp for. Nhưng bằng cách sử dụng phương thức repeat(), chúng ta có thể thực hiện nó trong một dòng duy nhất.

//Longhand 
let str = ''; 
for(let i = 0; i < 5; i ++) { 
  str += 'Hello '; 
} 
console.log(str); // Hello Hello Hello Hello Hello 

// Shorthand 
'Hello '.repeat(5);

Ví dụ: Bạn muốn xin lỗi ai đó bằng cách gửi 100 lần "sorry"? Hãy thử nó với phương thức repeat(). Nếu bạn muốn lặp lại từng chuỗi trong một dòng mới, hãy thêm \n vào chuỗi.

'sorry\n'.repeat(100);

14. Lũy thừa

Chúng ta có thể sử dụng phương thức Math.pow() để tìm lũy thừa của một số. Có một cú pháp ngắn hơn để thực hiện điều đó với là (**).

//Longhand 
const power = Math.pow(4, 3); // 64 

// Shorthand 
const power = 4**3; // 64

15. Toán tử kép (~~)

Toán tử kép (~~) là một thay thế cho phương thức Math.floor() dùng để làm tròn dưới.

//Longhand 
const floor = Math.floor(6.8); // 6 

// Shorthand 
const floor = ~~6.8; // 6

Chú ý: Toán tử kép ( ~~ ) chỉ hoạt động với số nguyên 32 bit, tức là (2^31) -1 = 2147483647. Vì vậy, đối với bất kỳ số nào cao hơn 2147483647, toán tử ( ~~ ) sẽ cho kết quả sai, vì vậy nên sử dụng Math.floo() trong trường hợp đó.

16. Tìm số lớn nhất và số nhỏ nhất trong mảng

Chúng ta có thể sử dụng vòng lặp for để lặp qua từng giá trị của mảng và tìm giá trị max hoặc min. Chúng ta cũng có thể sử dụng phương thức Array.reduce() để tìm số max và min trong mảng.

Nhưng sử dụng toán tử spread, chúng ta có thể thực hiện nó trong một dòng duy nhất.

// Shorthand 
const arr = [2, 8, 15, 4]; 
Math.max(...arr); // 15 
Math.min(...arr); // 2

17. Vòng lặp for

Để lặp qua một mảng, chúng ta thường sử dụng vòng lặp for truyền thống.

Chúng ta có thể sử dụng vòng lặp for...of để lặp qua các mảng. Để truy cập index của mỗi giá trị, chúng ta có thể sử dụng vòng lặp for...in.

let arr = [10, 20, 30, 40]; 
//Longhand 
for (let i = 0; i < arr.length; i++) { 
  console.log(arr[i]); 
} 

//Shorthand 
//for of loop 
for (const val of arr) { 
  console.log(val); 
} 
//for in loop 
for (const index in arr) { 
  console.log(arr[index]); 
}

Chúng ta cũng có thể lặp qua các thuộc tính đối tượng bằng cách sử dụng vòng lặp for...in.

let obj = {x: 20, y: 50}; 
for (const key in obj) { 
  console.log(obj[key]); 
}

Reference: Different ways to iterate through objects and arrays in JavaScript

18. Merging các mảng

let arr1 = [20, 30]; 
//Longhand 
let arr2 = arr1.concat([60, 80]); 
// [20, 30, 60, 80] 

//Shorthand 
let arr2 = [...arr1, 60, 80]; 
// [20, 30, 60, 80]

19. Clone đối tượng nhiều cấp

Để clone một đối tượng nhiều cấp, chúng ta có thể lặp qua từng thuộc tính và kiểm tra xem thuộc tính hiện tại có chứa một đối tượng hay không. Nếu có, sau đó thực hiện một cuộc gọi đệ quy đến cùng một hàm bằng cách chuyển giá trị thuộc tính hiện tại (tức là đối tượng lồng nhau).

Chúng ta cũng có thể làm điều đó bằng cách sử dụng JSON.stringify()JSON.parse() nếu đối tượng của chúng ta không chứa các function, undefined, NaN hoặc Date dưới dạng giá trị.

Nếu chúng ta có đối tượng mức đơn, tức là không có đối tượng lồng nhau nào, thì chúng ta cũng có thể clone bằng cách sử dụng toán tử spread.

let obj = {x: 20, y: {z: 30}}; 

//Longhand 
const makeDeepClone = (obj) => { 
  let newObject = {}; 
  Object.keys(obj).map(key => { 
    if(typeof obj[key] === 'object'){ 
      newObject[key] = makeDeepClone(obj[key]); 
    } else { 
      newObject[key] = obj[key]; 
    } 
  }); 
 return newObject; 
} 
const cloneObj = makeDeepClone(obj); 

//Shorthand 
const cloneObj = JSON.parse(JSON.stringify(obj));

//Shorthand for single level object
let obj = {x: 20, y: 'hello'};
const cloneObj = {...obj};

Chú ý: Kỹ thuật viết tắt JSON.parse(JSON.stringify (obj)) không hoạt động nếu thuộc tính đối tượng của bạn chứa function, undefined or NaN dưới dạng giá trị. Bởi vì khi bạn JSON.stringify đối tượng, thuộc tính chứa function, undefined or NaN dưới dạng giá trị sẽ bị xóa khỏi đối tượng.

Vì vậy, hãy sử dụng JSON.parse(JSON.stringify (obj)) khi đối tượng của bạn chỉ chứa chuỗi và số.

Reference: JSON.parse() and JSON.stringify()

20. Lấy ký tự từ chuỗi

let str = 'jscurious.com'; 
//Longhand 
str.charAt(2); // c 

//Shorthand 
str[2]; // c

Bài viết được dịch từ: https://medium.com/javascript-in-plain-english/20-javascript-shorthand-techniques-that-will-save-your-time-f1671aab405f


All Rights Reserved