如何讓小姐姐崇拜你的代碼

點擊上方“藍色字體”,選擇“設爲星標

做積極向上的前端人!



1、單行 If-Else 語句

這是許多編程語言的共同特徵。你可以使用三元運算符用一行代碼編寫整個語句,而不是在多行上編寫 if-else。

例如:

const age = 12;
let ageGroup;


// LONG FORM
if (age > 18) {
  ageGroup = "An adult";
else {
  ageGroup = "A child";
}


// SHORTHAND
ageGroup = age > 18 ? "An adult" : "A child";

但是,不要過度使用它。它會使你的代碼更加冗長。明智的做法是僅用此替換簡單的表達式以提高可讀性並減少代碼行數。

2、從數組中刪除重複項

在 JavaScript 中,Set 是一個集合,它允許你僅存儲唯一值。這意味着刪除任何重複的值。

因此,要從數組中刪除重複項,你可以將其轉換爲集合,然後再轉換回數組。

const numbers = [112033399];
const uniqueNumbers = [...new Set(numbers)]; // -> [1, 20, 3, 9]

困惑嗎?讓我解釋一下它是如何工作的:

1)、new Set(numbers)從數字列表中創建一個集合。創建集合會自動刪除所有重複值。

2)、展開運算符...將任何可迭代對象轉換爲數組。這意味着將集合轉換回數組。[...new Set(numbers)]

3、 較短的 If-Else 的空合併

這也是 if-else 的簡寫。

你可以使用看漲合併,而不是使用 if-else 構造來檢查值是否爲空。該nullish合併操作 ??,如果沒有定義左側返回右側。如果是,則返回左側:

let maybeSomething;


// LONG FORM
if(maybeSomething){
  console.log(maybeSomething)
else {
  console.log("Nothing found")
}


//SHORTHAND
console.log(maybeSomething ?? "Nothing found")

4、防止崩潰的可選鏈

如果訪問未定義的屬性,則會產生錯誤。這就是可選鏈的用武之地。

在未定義屬性時使用可選鏈運算符,undefined將返回而不是錯誤。這可以防止你的代碼崩潰。

例如:

const student = {
  name"Matt",
  age27,
  address: {
    state"New York"
  },
};


// LONG FORM
console.log(student && student.address && student.address.ZIPCode); // Doesn't exist - Returns undefined


// SHORTHAND
console.log(student?.address?.ZIPCode); // Doesn't exist - Returns undefined

5、在沒有第三個變量的情況下交換兩個變量

在 JavaScript 中,你可以使用解構從數組中拆分值。這可以應用於交換兩個變量而無需第三個:

let x = 1;
let y = 2;


// LONGER FORM
let temp = x;
x = y;
y = temp;


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

6、將任何值轉換爲布爾值

在 JavaScript 中,你可以使用 !! 在 JS 中將任何內容轉換爲布爾值。

例如,這裏有一些例子:

!!true    // true
!!2       // true
!![]      // true
!!"Test"  // true


!!false   // false
!!0       // false
!!""      // false

7、擴展運算符

使用擴展運算符組合兩個數組...:

const nums1 = [123];
const nums2 = [456];


// LONG FORM
let newArray = nums1.concat(nums2);


// SHORTHAND
newArray = [...nums1, ...nums2];

也可以使用此語法代替將值推送到數組:

let numbers = [123];


// LONGER FORM
numbers.push(4);
numbers.push(5);


// SHORTHAND
numbers = [...numbers, 45];

8、傳播解構

使用擴展運算符將剩餘元素分配給變量:

const student = {
  name"Matt",
  age23,
  city"Helsinki",
  state"Finland",
};


// LONGER FORM
const name = student.name;
const age = student.age;
const address = { city: student.city, state: student.state };


// SHORTHAND
const { name, age, ...address } = student;

9、 使用 && 進行短路評估

不必用if語句檢查某事是否爲真,你可以使用&&運算符:

var isReady = true;


function doSomething(){
  console.log("Yay!");
}


// LONGER FORM
if(isReady){
  doSomething();
}


// SHORTHAND
isReady && doSomething();

10、類固醇的字符串

通過將字符串包裝在反引號內並${}用於嵌入值,從而在字符串之間插入變量。

例如:

const age = 41;
const sentence = `I'm ${age} years old`;


// result: I'm 41 years old

11、 從數組中查找特定元素

使用find()方法查找匹配特定條件的元素:

const fruits = [
  { type"Banana", color: "Yellow" },
  { type"Apple", color: "Green" }
];


// LONGER FORM
let yellowFruit;
for (let i = 0; i < fruits.length; ++i) {
  if (fruits[i].color === "Yellow") {
    yellowFruit = fruits[i];
  }
}


// SHORTHAND
yellowFruit = fruits.find((fruit) => fruit.color === "Yellow");

12、對象屬性賦值

你是否希望對象鍵與值具有相同的名稱?你可以省略對象文字來執行此操作:

const name = "Luis", city = "Paris", age = 43, favoriteFood = "Spaghetti";


// LONGER FORM
const person = {
  name: name,
  city: city,
  age: age,
  favoriteFood: favoriteFood
};


// SHORTHAND
const person = { name, city, age, favoriteFood };

13、壓縮 For 循環

使用內置forEach()方法通過一行代碼循環遍歷數組:

const numbers = [12345];


// LONGER FORM
for(let i = 0; i < numbers.length; i++){
  console.log(numbers[i]);
}


// SHORTHAND
numbers.forEach(number => console.log(number));

14、 默認功能參數

你可以爲函數參數提供默認值:

// LONG FORM
function pickUp(fruit{
  if(fruit === undefined){
    console.log("I picked up a Banana");
  } else {
    console.log(`I picked up a ${fruit}`);
  }
}


// SHORTHAND
function pickUp(fruit = "Banana"{
  console.log(`I picked up a ${fruit}`)
}


pickUp("Mango"); // -> I picked up a Mango
pickUp();        // -> I picked up a Banana

15、將對象的值收集到數組中

用於Object.values()將對象的所有值收集到一個新數組中:

const info = { name"Matt"country"Finland"age35 };


// LONGER FORM
let data = [];
for (let key in info) {
  data.push(info[key]);
}


// SHORTHAND
const data = Object.values(info);

16、檢查一個項目是否存在於數組中

這不一定是速記,因爲你幾乎不會保存幾個字符。但這是一種更清潔的方法。

你可以使用 includes() 方法,而不是使用 indexOf() 方法來檢查元素是否在數組中。這使你的意圖非常明確:

let numbers = [123];


// LONGER FORM
const hasNumber1 = numbers.indexOf(1) > -1 // -> True


// SHORTHAND/CLEANER APPROACH
const hasNumber1 = numbers.includes(1)     // -> True

17、壓縮多個條件

避免使用長|| 檢查多個條件鏈,你可以使用你剛剛在上一個技巧中學到的東西——即,使用 includes() 方法:

const num = 1;


// LONGER FORM
if(num == 1 || num == 2 || num == 3){
  console.log("Yay");
}


// SHORTHAND
if([1,2,3].includes(num)){
  console.log("Yay");
}

18、 指數運算符

你Math.pow()習慣把一個數字提高到一個冪嗎?你知道你也可以使用**運算符嗎?

// LONGER FORM
Math.pow(4,2); // 16
Math.pow(2,3); // 8


// SHORTHAND
4**2 // 16
2**3 // 8

19、 Math.floor() 簡寫

四捨五入Math.floor()並不是什麼新鮮事。但是你知道你也可以使用~~運算符嗎?

例如:

// LONG FORM
Math.floor(5.25// -> 5.0


// SHORTHAND
~~5.25 // -> 5.0

20、 用一行代碼分配多個值

使用解構語法在一行中分配多個值:

let num1, num2;


// LONGER FORM
num1 = 10;
num2 = 100;


// SHORTHAND
[num1, num2] = [10100];

這也適用於使用 JavaScript 對象:

student = {
  name"Matt",
  age29,
};


// LONGER FORM
let name = student.name;
let age = student.age;


// SHORTHAND
let { name, age } = student;

結論

我希望你喜歡它並學到了一些新東西。

感謝你的閱讀,編程快樂!

英文 | https://medium.com/geekculture/20-javascript-snippets-to-code-like-a-pro-86f5fda5598e

翻譯 | 楊小二

— END —

點擊關注下方卡片關注我👇👇

漫畫 | 每天晚上堅持看書學習,但之後又記不住,這樣對自身成長真有好處嗎?

這些一行 JS 實現功能的代碼,讓你看起來像一個前端專家

只因 js 代碼寫的太騷氣,被同事揍了N次?
面試官:這些功能你能不能不用JS來完成?
從敲下一行JS代碼到這行代碼被執行,中間發生了什麼?
JSON.stringify() 的 5 個祕密特性

如果覺得這篇文章還不錯,來個【分享、點贊、在看】三連吧,讓更多的人也看到~

本文分享自微信公衆號 - 前端佈道師(honeyBadger8)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章