JavaScript速記技巧:向著更清晰的代碼邁進

2020-12-08 讀芯術

全文共4545字,預計學習時長12分鐘

圖源:unsplash

無論是哪個程式語言的速記技巧,都有助於你編寫更好、更清晰的代碼。藉助速記技巧,不僅可以提升代碼可讀性,還可以編寫更少代碼完成任務。下面是一些JavaScript的速記技巧。

1.聲明變量

//Longhand

let x;

let y = 20;

//Shorthand

let x, y = 20;

2.給多個變量賦值

可以在一行代碼中給多個變量同時賦值。

//Longhand

let a, b, c;

a = 5;

b = 8;

c = 12;

//Shorthand

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

3.三元運算符

使用三元運算符(條件),五行代碼可以簡化為一行。

//Longhand

let marks = 26;

let result;

if(marks >= 30){

result = 'Pass';

}else{

result = 'Fail';

}

//Shorthand

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

4.分配默認值

我們可以使用OR(||)短路評估為變量指定一個默認值,以防期望值為空。

//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.AND(&&)短路評估

如需只在變量為真的情況下調用一個函數,則可使用AND(&&)短路評估在一行內完成。

//Longhand

if (isLoggedin) {

goToHomepage();

}

//Shorthand

isLoggedin && goToHomepage();

速記寫法這一行,只有在isLoggedin返回結果為真時,goToHomepage()才會執行。

6.交換兩個變量

通常交換兩個變量需要藉助第三個變量。然而通過數組析構賦值,可以輕鬆交換兩個變量。

//Longhand

functionadd(num1, num2) {

return num1 + num2;

}

//Shorthand

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

7.箭頭函數

//Longhand

functionadd(num1, num2) {

return num1 + num2;

}

//Shorthand

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

8.模板文字

我們通常使用「+」運算符連接字符串值和變量。有了ES6模板,我們可以通過一種更簡單的方式實現。

//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.多行字符串

對於多行字符串,我們通常使用「+」運算符和換行轉義符(\n)進行連接。然而可以使用「`」簡化代碼。

//Longhand

console.log('JavaScript, often abbreviated as JS, is a\n' + 'programming language thatconforms 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 languagethat conforms to the ECMAScript specification. JavaScript is high-level, oftenjust-in-time compiled, and multi-paradigm.`);

10.多重條件檢查

對於多值匹配,可以將所有的值放在數組中,並使用indexOf()或includes()方法。

//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.對象屬性分配

如果變量名和對象鍵名相同,可以只在對象文字中設置變量名,不用同時設置鍵和值。JavaScript會自動將鍵名設置為變量名,並將該值賦為變量值。

let firstname = 'Amitav';

let lastname = 'Mishra'; //Longhand

let obj = {firstname: firstname, lastname: lastname};

//Shorthand

let obj = {firstname, lastname};

12.字符串類型轉換為數字類型

有內置的方法,如parseInt 和parseFloat ,可用於將字符串轉換為數字。更簡單的方法是,在字符串值前加上一元運算符(+)。

//Longhand

let total = parseInt('453');

let average = parseFloat('42.6');

//Shorthand

let total = +'453';

let average = +'42.6';

13.多次重複同一字符串

若要將字符串重複指定的次數,可以使用for 循環。但是使用repeat() 方法可以在一行中完成。

//Longhand

let str = '';

for(let i = 0; i < 5; i ++) {

str += 'Hello ';

}

console.log(str); // Hello Hello Hello Hello Hello

// Shorthand

'Hello '.repeat(5);

小貼士:想通過給某人發100次「對不起」進行道歉?試試repeat()方法。如果你想在每次重複時另起一行,只需加上\n。

14.指數冪

我們可以用Math.pow()方法求冪。然而用雙星號(**)有一個更短的語法。

//Longhand

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

// Shorthand

const power = 4**3; // 64

15.按位雙非運算符

按位雙非運算符可以替代Math.floor()方法。

//Longhand

constfloor = Math.floor(6.8); // 6

// Shorthand

constfloor = ~~6.8; // 6

按位雙非運算符方法僅適用於32位整數,即(2**31)-1 = 2147483647。所以對於任何高於2147483647的數字,按位運算符(~~)都會給出錯誤的結果,所以在這種情況下建議使用Math.floor()。

16.找出數組的最大值和最小值

可以使用for循環遍歷數組的每個值,從而找到最大值或最小值。也可以使用Array.reduce()方法來查找數組中的最大值和最小值。

但是使用擴展運算符則可在一行中完成。

// Shorthand

const arr = [2, 8, 15, 4];

Math.max(...arr); // 15

Math.min(...arr); // 2

17.For循環

為遍歷數組,通常使用的是傳統的for 循環,也可以使用for...of 循環進行遍歷。如需訪問每個值的索引,可以使用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]);

}

使用for...in循環還可以遍歷對象屬性。

let obj = {x: 20, y: 50};

for (const key in obj) {

console.log(obj[key]);

}

18.數組合併

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.多級對象的深度克隆

要深度克隆多級對象,可以遍歷每個屬性,並檢查當前屬性是否包含對象。如果是,則通過傳遞當前屬性值(即嵌套對象)對同一函數進行遞歸調用。也可以使用JSON.stringify()和JSON.parse()在一行中實現。

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));

如果對象屬性以函數作為值,則速記技巧(JSON.parse(JSON.stringify(obj)))無效。因為JSON.stringif作用於對象時,以函數作為值的屬性會從對象中移除。所以這種情況下,還是要用普通寫法。

20.從字符串中獲取字符

let str = 'jscurious.com'; //Longhand

str.charAt(2); // c

//Shorthand

str[2]; // c

希望本文能讓你有所收穫。

留言點讚關注

我們一起分享AI學習與發展的乾貨

如轉載,請後臺留言,遵守轉載規範

相關焦點

  • JavaScript 中 Eval 函數的前世今生,執行代碼字符串
    Eval:執行代碼字符串內建函數 eval 允許執行一個代碼字符串。代碼壓縮工具(在把 JS 投入生產環境前對其進行壓縮的工具)將局部變量重命名為更短的變量(例如 a 和 b 等),以使代碼體積更小。這通常是安全的,但在使用了 eval 的情況下就不一樣了,因為局部變量可能會被 eval 中的代碼訪問到。因此壓縮工具不會對所有可能會被從 eval 中訪問的變量進行重命名。這樣會導致代碼壓縮率降低。
  • JavaScript中使用bind()方法讓代碼更乾淨
    來自:碼農網連結:http://www.codeceo.com/article/javascript-bind-clean-code.html
  • JavaScript代碼風格要素
    簡潔的代碼對於軟體而言至關重要。更多的代碼意味更多的bug隱藏空間。更少的代碼 = 更少的bug隱藏空間 = 更少的bug簡潔的代碼讀起來更清晰,因為它擁有更高的「信噪比」:閱讀代碼時更容易從較少的語法噪音中篩選出真正有意義的部分。
  • 12 個非常有用的 JavaScript 技巧
    作者: Caio Ribeiro Pereira轉載自:W3CPlus http://www.w3cplus.com/javascript/12-extremely-useful-hacks-for-javascript.html 譯者: 大漠在這篇文章中將給大家分享12個有關於JavaScript的小技巧。
  • 法士特集團:凝心聚力 接續奮鬥 向著更高目標邁進
    法士特集團:凝心聚力 接續奮鬥 向著更高目標邁進 時間: 2020-01-09 15:31:16 字體設置 大 中 小
  • 20個常用的JavaScript簡寫技巧
    任何程式語言的簡寫技巧都能夠幫助你編寫更簡練的代碼,讓你用更少的代碼實現你的目標。讓我們一個個來看看 JavaScript 的簡寫技巧吧。 1. 聲明變量 2.
  • 由淺入深學習JavaScript Debug技巧
    因為我們可能有時候不得不使用這樣舊式的技巧。我最近一次使用alert是我在debug一個行動裝置的時候現有的技巧無法正常工作,我只好用alert。開發者工具歡迎來到未來!哈哈,並不是這樣。開發者工具已經使用了好些年了。不過呢,很多新的特性被加進去,相信不少人都不知道或則不清楚怎麼使用。
  • 網頁性能之html css javascript
    DOCTYPE html><html>  <head>    <title>test</title>  </head>  <body>    <img src="download-button.png" alt="HTML代碼優化 網頁性能 JavaScript技巧 Javascript
  • 網頁技巧:妥善處理JavaScript中的錯誤
    首頁 > 教程 > 關鍵詞 > 網頁最新資訊 > 正文 網頁技巧:妥善處理JavaScript中的錯誤
  • 9個最好用的JavaScript開發工具和代碼編輯器
    來自:碼農網譯文連結:http://www.codeceo.com/article/9-javascript-ide-editor.html
  • PHP代碼20個實用技巧
    在這篇文章中我們將看看一些關於PHP開發有用的提示和技巧,可以用來改善和優化您的PHP代碼。
  • 專訪邱俊濤:高級JavaScript程式設計師代碼應結構清晰、模塊化良好
    高級JavaScript程式設計師,應能編寫出有規模、模塊化良好和結構清晰的代碼CSDN:閉包(Closure)可以說是JavaScript的一個難點,能夠熟練使用閉包也是邁向高級JavaScript程式設計師的必經之路,你能不能和大家分享下閉包學習和平時應用閉包的一些經驗和心得?
  • 七天學會javascript第一天javascript介紹
    javascript介紹javascript數據類型javascript運算符javascript對象javascriptjavascript :客戶端編程。javascript是由客戶端去解釋運行的。怎麼引入javascript 呢?
  • 12 個 GitHub 上超火的 JavaScript 奇技淫巧項目,找到寫 JavaScript 的靈感!
    大家好,我是你們的 貓哥,一個不喜歡吃魚、又不喜歡喵 的超級貓 ~前言貓哥是一個常年混跡在 GitHub 上的貓星人,所以發現了不少好的前端開源項目、常用技巧,在此分享給大家。平時如何發現好的開源項目,可以看看這篇文章:GitHub 上能挖礦的神仙技巧 - 如何發現優秀開源項目以下為【前端GitHub】的第 12 期精華內容。
  • 實用Javascript調試技巧分享
    因為大多數同學追求優雅而高效地寫代碼,卻忽略了如何優雅而高效地調試代碼,不得不說是有點「偏科」了。下面我就分享一些實用且聰明的調試技巧,希望能讓大家調試自己代碼的時候更加從容自信。1.其次, alert會阻塞UI和javascript的執行,必須點擊'OK'按鈕才能繼續,非常低效。所以,喜歡使用 alert的同學可以改改這個習慣了。2.
  • 在HTML中使用JavaScript實例代碼「言午」
    此文章主要為大家介紹了在HTML中使用JavaScript實例代碼,具有一定的參考價值,學習覺得挺不錯的,分享給大家。 type(可選):關鍵詞:MIME(腳本語言的內容類型)為保證最大限度的瀏覽器兼容,type的屬性值主要時候用的依舊是text/javascript,如果沒有寫這個屬性,其默認值仍然為text/javascript。
  • 一行代碼證明編程能力,javascript程式語言中,經典語句精髓解析
    javascript程式語言中,經典語句精髓解析,一行代碼證明編程能力!程式設計師:十萬行代碼,證明編程基礎的掌握;之後,一行代碼證明編程的能力!1、if語句在javascript語言中,if條件語句是很常用到的。與其他程式語言相比,還是有差異的。
  • 細說javascript常用的兩種循環,讓重複執行的代碼遠離你的困惑
    今天小編給大家帶來的javascript循環語句。考考你:在開始之前,小編有一個小小的問題,不知道大家是否還記得咱們昨天講過的判斷語句,它與循環語句有什麼區別?判斷語句:定義一個初始值,當滿足條件的時候輸出其後面的內容,否則輸出其它,或者是直接跳出,而循環語句呢,就是已經初始條件和終始條件,分別輸出其條件滿足的內容,換言之:假如我們有50個人,想要在控制臺上列印輸出看一下這50個人在做什麼,候如用判斷語句來做是不是很麻煩,而且代碼量非常大,也非常消耗時間,這個時候呢就需要我們今天學的內容—javascript循環語句
  • 你不知道的16條JavaScript調試技巧
    但一旦你掌握技巧,了解了工具本身,便能節省一大把時間。以下16條調試技巧,可供您在下次調試JavaScript代碼時使用!這些技巧大多數都適用於Chrome和Firefox,許多技巧也可以與其他檢查員一起使用。
  • Javascript 生成器
    > 如果運行這段代碼,則會得到以下輸出: 下面我來解釋該程序是如何工作的。 生成器函數 首先,代碼中存在生成器函數的定義: 後面的 告訴 javascript 這是一個生成器函數。以下寫法都是生成器函數的有效定義。 並不是函數名的一部分。而是 符號定義了生成器。