15 個(gè) JavaScript 簡(jiǎn)寫技巧,效率提升 70%
自從ES6問世以來,JavaScript的語法變得更加簡(jiǎn)潔和易讀。下面就由前端君來給大家好好講講,如何用一些簡(jiǎn)寫技巧來讓JavaScript代碼更加優(yōu)雅。
1. 箭頭函數(shù)
這個(gè)可是簡(jiǎn)化函數(shù)表達(dá)式的神器,而且它沒有自己的this,用起來特別方便。
// 以前寫法
var greet = function(name) {
console.log("Hello, " + name);
};
// 現(xiàn)在簡(jiǎn)化后
const greet = name => console.log(`Hello, ${name}`);
2. 默認(rèn)參數(shù)
給函數(shù)參數(shù)設(shè)置默認(rèn)值,這樣調(diào)用函數(shù)時(shí)就不用擔(dān)心忘記傳參數(shù)了。
function createUser(name = "Guest", age = 30) {
// ...
}
3. 模板字符串
用反引號(hào)來定義字符串,不僅支持多行文本,還能直接嵌入變量,簡(jiǎn)直是太方便了。
const message = `Hello,
My name is ${name}`;
4. 解構(gòu)賦值
從數(shù)組或?qū)ο笾兄苯犹崛?shù)據(jù)賦值給變量,省去了中間的步驟。
對(duì)象解構(gòu):
const { prop1, prop2 } = obj;
數(shù)組解構(gòu):
const [first, second] = arr;
5. 展開運(yùn)算符
這個(gè)運(yùn)算符可以用來復(fù)制數(shù)組、合并數(shù)組或?qū)ο螅梅ǔ?jí)靈活。
const newArray = [...oldArray];
const newObj = { ...obj1, ...obj2 };
6. 計(jì)算屬性名
允許我們用表達(dá)式作為對(duì)象的鍵名,這樣就能動(dòng)態(tài)地設(shè)置鍵名了。
const keyName = "dynamicKey";
const obj = {
[keyName]: "value"
};
7. 簡(jiǎn)化的對(duì)象方法定義
定義對(duì)象的方法時(shí),可以省略function關(guān)鍵字,讓代碼更加簡(jiǎn)潔。
const obj = {
method() {
// 方法體
}
};
8. 類的簡(jiǎn)寫
在類中定義方法時(shí),也可以省略function關(guān)鍵字,還能用static關(guān)鍵字定義靜態(tài)方法,真是省心省力。
class MyClass {
constructor() {}
method() {}
static staticMethod() {}
}
9. 簡(jiǎn)單的getter/setter
簡(jiǎn)化了對(duì)象屬性的讀取和設(shè)置,用起來特別直觀。
class Person {
constructor(age) {
this._age = age;
}
get age() {
return this._age;
}
set age(value) {
this._age = value;
}
}
10. for...of循環(huán)
遍歷可迭代對(duì)象(比如數(shù)組、字符串、Map、Set等)的元素,用起來特別方便。
for (let value of iterable) {
console.log(value);
}
11. Promise 和 async/await
這個(gè)組合真是異步操作的救星,讓咱們可以用同步的方式寫出異步代碼,特別是async/await避免了煩人的回調(diào)地獄。
async function fetchData() {
try {
let response = await fetch(url);
let data = await response.json();
console.log(data);
} catch (error) {
console.error('Error:', error);
}
}
12. 省略分號(hào)
雖然這不是推薦的做法,但JavaScript會(huì)自動(dòng)插入分號(hào),在某些情況下可以省略它們,不過還是建議大家為了代碼的可讀性,盡量不要省略分號(hào)。
13. 運(yùn)算符簡(jiǎn)寫
- 三元運(yùn)算符:代替簡(jiǎn)單的if...else語句,讓代碼更加簡(jiǎn)潔。
const result = condition ? trueValue : falseValue;
- 邏輯運(yùn)算符賦值:&&=, ||=, ??=分別代表邏輯與賦值、邏輯或賦值、空值合并賦值。
let x;
x ||= "default"; // 如果x是falsey,則賦值"default"
- 空值合并運(yùn)算符:??用于處理null或undefined。
const userSetting = userPref ?? 'default';
14. import/export模塊化
簡(jiǎn)化了模塊的導(dǎo)入導(dǎo)出,讓代碼的組織更加清晰。
// 導(dǎo)入所有成員
import * as lib from './lib';
// 導(dǎo)出多個(gè)成員
export { member1, member2 };
// 默認(rèn)導(dǎo)出
export default class MyClass {};
15. Rest 參數(shù)
這個(gè)參數(shù)可以收集剩余的參數(shù)到一個(gè)數(shù)組中,特別適合處理可變數(shù)量的參數(shù)。
function sum(...args) {
return args.reduce((a, b) => a + b, 0);
}
以上這些技術(shù)都能幫助我們寫出更加簡(jiǎn)潔、高效的JavaScript代碼。不過,咱們?cè)谧非蟠a簡(jiǎn)潔的同時(shí),也一定要注意保持代碼的可讀性和維護(hù)性,大家在實(shí)際開發(fā)中,還是要根據(jù)具體情況來選擇合適的簡(jiǎn)寫方式哦!