1. 空對象檢查
if (!Object.keys(obj).length){ // 當對象為空時執(zhí)行 }
如果您想檢查一個對象是否為空,您可以使用Object.keys()方法,然后使用length屬性來確定對象中是否有任何鍵。如果對象的長度為零,則它是空的。
2. 數(shù)組轉(zhuǎn)換
var arr = Array.prototype.slice.call(arguments);
如果您想轉(zhuǎn)換一個類似數(shù)組的對象為一個真正的數(shù)組,您可以使用call()方法調(diào)用Array.prototype.slice()方法,這樣您就可以便利的使用數(shù)組的方法了。
3. 多項對比
if (a === (b === c)){ // 是否等于a == b && b == c }
如果您有同一值的多個變量需要比較,這個技巧將非常實用,因為它可以將多余的比較符省略。它和 (a == b && b == c)相等。
4. 使用默認值
function myFunction(param){ param = param|| "默認值"; return param; }
如果您需要一個可選參數(shù)并想要使用一個默認值,這個技巧將派上用場。如果參數(shù)為false或undefined,則默認值將被覆蓋。
5. 檢查類
function isClass(classObj){ return typeof classObj === "function" && /^class\s/.test(Function.prototype.toString.call(classObj)); }
檢查對象是否為類的大型問題就到了!該技巧使用Function.prototype.toString()方法來檢查對象是否具有字符串“class”作為頭。如果是,它就是一個類。
6. 函數(shù)柯里化
function multiply(a, b) { return a * b; } function createCurriedMultiply(a) { return function(b) { return multiply(a, b); }; } var double = createCurriedMultiply(2); double(5); // -> 10
柯里化是一種常見的函數(shù)變換,其中一個函數(shù)接收一些參數(shù)并返回一個接收任意數(shù)量參數(shù)的函數(shù)。當我們?yōu)槠涮峁┝俗銐虻膮?shù)時,它將返回計算結(jié)果。
7. 引用類型
const a = [1, 2]; const b = [...a]; b.push(3); console.log(a); // [1, 2] console.log(b); // [1, 2, 3]
對象是通過引用傳遞的,所以它們可以被輕松地更改。如果您需要復制一個對象而不是引用它,使用...spread符號和數(shù)組字面量。
8. 數(shù)組去重
const arr = [1, 2, 2, 3, 3, 3]; const uniqueArr = [...new Set(arr)]; console.log(uniqueArr); // [1, 2, 3]
使用Set包裝器和spread操作符將角括號張開并傳遞給Array構(gòu)造函數(shù)來消除重復的元素。
9. 對象合并
const obj1 = { a: 1, b: 1, c: 1 }; const obj2 = { b: 2, c: 2 }; const mergedObj = { ...obj1, ...obj2 }; console.log(mergedObj); // { a: 1, b: 2, c: 2 }
使用spread操作符將兩個對象合并到一個新對象中。如果對象有相同的屬性,則后一個對象將覆蓋前一個對象。
10. 字符串反轉(zhuǎn)
const str = "abc"; const reversedStr = str.split("").reverse().join(""); console.log(reversedStr); // cba
字符串反轉(zhuǎn)很容易,只需將字符串轉(zhuǎn)換為數(shù)組,反轉(zhuǎn)數(shù)組并將其連接起來。
11. 函數(shù)參數(shù)默認值
function myFunction(param = "默認值") { return param; } console.log(myFunction()) // 默認值 console.log(myFunction("其他值")) // 其他值
在函數(shù)定義中使用默認參數(shù)值。
12. 數(shù)組中最大最小值
const arr = [1, 2, 3, 4, 5]; const max = Math.max(...arr); const min = Math.min(...arr); console.log(max); // 5 console.log(min); // 1
使用Math對象的最大和最小方法來找到數(shù)組中的最大值和最小值。
13. 數(shù)組平均值
const arr = [1, 2, 3, 4, 5]; const avg = arr.reduce((a, b) => a + b, 0) / arr.length; console.log(avg); // 3
使用reduce()方法將所有元素相加,然后將結(jié)果除以數(shù)組的長度以找到平均值。
14. 類型檢查
const arr = [1, 2, 3]; const obj = { a: 1, b: 2, c: 3 }; console.log(Array.isArray(arr)); // true console.log(typeof obj === "object" && !Array.isArray(obj) && obj !== null); // true
使用Array.isArray()來檢查數(shù)組類型,使用typeof和Array.isArray()來檢查非數(shù)組對象。
15. 匿名函數(shù)調(diào)用
(function() { // 執(zhí)行一些代碼 })();
使用匿名函數(shù)來執(zhí)行代碼并隔離變量。
16. 字符串拼接
const name = "John"; const age = 25; const str = <code>My name is ${name} and I'm ${age} years old.</code>; console.log(str); // My name is John and I'm 25 years old.
使用字符串模板和${}符號來拼接字符串和變量。
17. 函數(shù)聲明
(function() { function myFunction() { // 執(zhí)行一些代碼 } })();
在函數(shù)聲明前使用一個匿名函數(shù)來隔離代碼和變量。
18. 數(shù)組遍歷
const arr = [1, 2, 3]; for (let i = 0; i < arr.length; i++) { console.log(arr[i]); }
使用for循環(huán)來遍歷數(shù)組。
這就是我們所介紹的18個JavaScript技巧。它們可以幫助您變得更有效率,更能利用語言的各種功能。祝您編寫愉快的代碼!