Lời mở đầu
Các kỹ thuật viết tắt trong bất cứ ngôn ngữ nào đều giúp code của chúng ta được gọn gàng, tối ưu và ngắn gọn hơn. Và vì ngắn gọn nên nó cũng sẽ tiết kiệm thời gian cho chúng ta. Hôm nay tôi sẽ giới thiệu tới các bạn một số cách viết tắt trong JavaScript, bắt đầu nhé
.
1. Toán tử ba ngôi
Nếu bạn chỉ muốn gán giá trị cho một biến dựa trên một điều kiện thì đây là một lựa chọn thay thế tuyệt vời.
const age = 15;
let message;
if (age > 18) {
message = "The person is an adult";
} else {
message = "The person is not an adult";
}
const message =
age > 18 ? "The person is an adult" : "The person is not an adult";
Với câu điều kiện kết hợp else if
thì sao ?
const age = 15;
if (age > 18) {
message = "The person is an adult";
} else if (age > 12) {
message = "The person is a teenager";
} else {
message = "The person is not an adult";
}
const age = 15;
const message =
age > 18
? "The person is an adult"
: age > 12
? "The person is a teenager"
: "The person is a child";
Đây là câu trả lời.
2. Gán giá trị mặc định với null hoặc underfined
Nếu bạn muốn gán giá trị mặc định cho một biến khi nó null
hoặc underfined
, bạn có thế sử dụng nullish coalescing toán tử ??
như sau
const message;
if (message === null || message === undefined) {
message = "Hello";
}
console.log(message + "there");
console.log((message ?? "Hello") + "there");
3. Short-Circuit Evaluation với toán tử ??
Hiểu một cách đơn giản là hãy để những gì là null
hoặc undefined
ở bên trái của toán tử ??
.
functionOne = () => {
console.log("functionOne called!");
return undefined;
};
functionTwo = () => {
console.log("functionTwo called!");
return false;
};
functionThree = () => {
console.log("functionThree called!");
return "hello!";
};
Longhand
if (functionOne() == undefined) {
console.log(functionThree());
}
if (functionTwo() == undefined) {
console.log(functionThree());
}
console.log(functionOne() ?? functionThree());
console.log(functionTwo() ?? functionThree());
4. Giá trị mặc định với ??=
Cùng giống như toán tử ??
nhưng ??=
sẽ gán luôn một giá trị cho biến nếu nó null
hoặc undefined
greetings = (partOne, partTwo) => {
if (partTwo === null || partTwo === undefined) {
partTwo = "!";
}
return partOne + partTwo;
};
console.log(greetings("Hello"));
greetings = (partOne, partTwo) => {
partTwo ??= "!";
return partOne + partTwo;
};
console.log(greetings("Hello"));
5. Gián nhiều giá trị
Bạn có thể gián nhiều giá trị cùng một lúc bằng cách dùng hàm destructuring.
let one, two;
one = 1;
two = 2;
[one, two] = [1, 2];
person = {
name: "John",
age: 25,
};
let name = person.name;
let age = person.age;
let { name, age } = person;
6. Gộp mảng và thêm nhiều phần tử vào mảng.
Bạn có thể gộp 2 mảng khác nhau và cũng có thể thêm các phần tử mới vào một mảng đã tồn tại.
const one = [1, 2, 3];
const two = [4, 5, 6];
const newArray = one.concat(two);
const newArray = [...one, ...two];
let numbers = [1, 2, 3];
numbers.push(4);
numbers.push(5);
numbers = [...numbers, 4, 5];
7. Cú pháp Spread với Destructuring
Bạn cũng có thể sử dụng cú pháp Spread với Destructuring để gán các phần tử của một mạng cho một biến mới một cách nhanh chóng như sau.
const numbers = [1, 2, 3, 4, 5];
const one = numbers[0];
const two = numbers[1];
let others = [];
others.push(numbers[2]);
others.push(numbers[3]);
others.push(numbers[4]);
const [one, two, ...others] = numbers;
person = {
name: "John",
age: 25,
city: "LA",
state: "California",
};
const name = person.name;
const age = person.age;
const address = { city: person.city, state: person.state };
const { name, age, ...address } = person;
8. So sánh Short-Circuit với &&
Khi bạn muốn thực hiện một function kết hợp với một hoặc nhiều điều kiện cho trước(điều kiện là các điều kiện này trả về giá trị là truthy) bạn có thể dùng cách này.
/ Example one
if (isAuthorized) {
loadHomePage();
}
isAuthorized && loadHomePage();
if (x == 1 || x == 5 || x == 7) {
functionOne();
}
[1, 5, 7].includes(x) && functionOne();
Lưu ý nhé: Trong javascript các giá trị sau: null, undefined, '',false, 0 là falsy, còn lại tất cả các giá trị khác là truthy
9. Template Literals
Nếu bạn muốn nối các biến với nội dung chuỗi tính các bạn sẽ sử dụng toán tử "+". Tuy nhiên có 1 cách khác như sau.
const message = "Welcome " + name + ".";
const url = "http://" + host + ":" + port + "/" + path;
const message = `Welcome ${name}.`;
const url = `http://${host}:${port}/${path}`;
Bạn cũng có thể sử dụng cho các chuỗi nằm trên nhiều dòng.
const sample =
"Lorem ipsum dolor sit amet, consectetur\n\t" +
"adipisicing elit, sed do eiusmod tempor incididunt\n\t" +
"ut labore et dolore magna aliqua.";
const sample = `Lorem ipsum dolor sit amet, consectetur
adipisicing elit, sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.`;
10. Switch Case viết tắt thì sẽ như thế nào ?
Bạn có thể dùng một object có tên hàm được liên kết với một key để thay thế cho câu lạnh switch.
const something = 2;
switch (something) {
case 1:
doSomething();
break;
case 2:
doSomethingElse();
break;
case 3:
doSomethingElseAndOver();
break;
}
var cases = {
1: doSomething,
2: doSomethingElse,
3: doSomethingElseAndOver,
};
cases[2]();
11. Arrow Functions
Việc sử dụng các hàm lồng nhau có thể gây ra việc khó hiểu khi đọc code, vậy nên chúng ta có thể sử dùng Arrow Functions để giải quyết vấn đề này:
function greeting(fullname) {
console.log("Hi ", fullname);
}
setTimeout(function () {
console.log("Load successful!");
}, 4000);
greeting = (fullname) => console.log("Hi ", fullname);
setTimeout(() => console.log("Load successful!"), 4000);
12. Đối với các vòng lặp
Thay vì sử dụng vòng lặp truyền thống để lặp qua các phần tử của mảng chúng ta có thể sử dụng forEach().
const languages = ["C", "C++", "Java", "C#", "JavaScript"];
for (let i = 0; i < languages.length; i++) {
console.log(languages[i]);
}
languages.forEach((language) => {
console.log(language);
});
Nếu chỉ muốn lấy ra các key của mảng hoặc đối tượng các bạn có thể dùng for...in
const languages = ["C", "C++", "Java", "C#", "JavaScript"];
for (let k in languages) {
console.log(k);
}
const person = { name: "John", country: "USA", city: "LA" };
for (let key in person) {
console.log(key);
}
13. Khai báo biến
Thay vì khai báo từng biến riêng biệt, bạn có thể làm theo cách sau để tiết kiệm thời gian và số dòng code.
let name;
let age;
let place = "LA";
let name,
age,
place = "LA";
14. Lấy giá trị của đối tượng vào mảng
const credits = { name: "John", city: "LA", age: 25 };
let arrOne = [];
for (let key in credits) {
arrOne.push(credits[key]);
}
const arrTwo = Object.values(credits);
15. Chuyển đổi từ string sang number
Bạn có thể chuyển đổi từ string sang number bằng cách sử dụng toán tử + như sau
const one = parseInt("10");
const two = parseFloat("10.25");
const three = +"10";
const four = +"10.25";
Lời kết.
Trên đây là một số các ký thuật để code nhanh hơn trong Javacript mà tôi thấy rất hữu ích. Hy vọng các kỹ thuật trên cũng hữu ích khi được sử dụng trong dự án của các bạn. Cảm ơn vì đã đọc, chúc các bạn một ngày vui vẻ!