日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

你不可不知的 15 個 JavaScript 小貼士

來源: 責編: 時間:2024-03-21 09:45:03 254觀看
導讀在掌握如何編寫JavaScript代碼之后,那么就進階到實踐——如何真正地解決問題。我們需要更改JS代碼使其更簡單、更易于閱讀,因為這樣的程序更易于團隊成員之間緊密協作。今天,我們將介紹15個最佳實踐技巧,可幫助簡化JavaSc

在掌握如何編寫JavaScript代碼之后,那么就進階到實踐——如何真正地解決問題。我們需要更改JS代碼使其更簡單、更易于閱讀,因為這樣的程序更易于團隊成員之間緊密協作。aON28資訊網——每日最新資訊28at.com

今天,我們將介紹15個最佳實踐技巧,可幫助簡化JavaScript代碼,易于其他開發人員理解,也使程序更具可讀性和可維護性。aON28資訊網——每日最新資訊28at.com

1. 在頂部聲明并初始化變量

沒有什么比延遲聲明更能破壞可讀性的了。正如在開始工作之前準備好所有工具可以幫助簡化工作,在進入函數的細節之前聲明所有變量也可以讓程序更簡單。這也方便了我們以后調整變量名稱或值。aON28資訊網——每日最新資訊28at.com

至于變量,最佳做法是在創建時初始化變量,以便你和你的團隊都可以確定沒有undefined的變量。aON28資訊網——每日最新資訊28at.com

<script>var x = 5;</script>

2. 構建模塊化、專業化的函數

為了效率和可讀性,單個函數走天下是不可行的。所以我們在設計函數時,應該秉持著一個任務一個函數的原則。函數命名也應當匹配任務。aON28資訊網——每日最新資訊28at.com

這樣做是不是更方便其他人閱讀代碼了呢?因為只處理一項任務,自然而然函數就會更簡單。甚至以后如果有需要,你和你的團隊還可以將此函數應用到其他程序。aON28資訊網——每日最新資訊28at.com

請看下面的示例,改進后的代碼只看函數名和變量名,就可以清楚地知道任務目的。aON28資訊網——每日最新資訊28at.com

function table (columns, rows, item){creates table and searches it for the passed item}// compared tofunction createTable (columns, rows){//creates table}function searchTable (table.length, item) {//searches table for the passed item}

3. 識別并刪除重復代碼

有時,代碼中不可避免地會出現重復的代碼行。在這種情況下,應將重復的代碼改寫為函數,并在以前所有使用過這些代碼的地方改為調用函數。aON28資訊網——每日最新資訊28at.com

這不但減少了視覺混亂,還有助于以后的調試,因為這樣一來團隊只需要查看函數,而不必一一檢查多處代碼。aON28資訊網——每日最新資訊28at.com

<script>var x = 5;var y = 6;var x = x*2var y = y*2</script><script>var x = 5;var y = 6;function double (value){return value*2;}double (x);double(y);</script>

4. 多注釋代碼

注釋是總結代碼片段目的的好方法,可以節省其他開發人員靠自己去確定代碼所需的時間。aON28資訊網——每日最新資訊28at.com

如果代碼未完成注釋描述應完成的任務,還能及時捕獲可能的錯誤。一般來說,最好每個函數都有一條注釋。aON28資訊網——每日最新資訊28at.com

不確定應不應該寫注釋?那就寫吧!如果太過雜亂,大不了以后刪除罷了。aON28資訊網——每日最新資訊28at.com

//declares and initializes var x<script>var x = 5;</script>

5. 謹防過度使用遞歸

注意:遞歸函數不要嵌套太多層。雖然說多層嵌套能一次解決許多問題,但我們很難一目了然。aON28資訊網——每日最新資訊28at.com

為避免困惑,盡可能在不產生大量運行時成本的前提下,解放嵌套的遞歸函數。如果你有3+層的嵌套函數,那么你的同事可能很難跟上你的思路。aON28資訊網——每日最新資訊28at.com

function1 (a,b){  function2{    function3{    //this is too hard to follow and can likely be solved another way    }  }}</script>

6. 高效使用DOM操作

訪問DOM對于充分利用程序至關重要,但反復這樣做會導致視覺混亂并會減慢程序速度。aON28資訊網——每日最新資訊28at.com

因此,我們最好訪問一次并進行緩存,以供稍后在變量中使用。然后有需要的話,直接訪問變量而不是訪問DOM。這個過程在視覺上更干凈、更高效。aON28資訊網——每日最新資訊28at.com

注意:最佳做法是使用$符號標記DOM引用。aON28資訊網——每日最新資訊28at.com

function accountInfo(){var email = $("#accounts").find(".email").val();var accountNumber = $("#accounts").find(".accountNumber").val();}// Contents cached to variable "accounts"function accountInfo(){ var $accounts = $("#accounts"); var name = $accounts.find(".email").val(); var age = $accounts.find(".accountNumber").val();}

7. 不惜一切代價避免全局變量

在JavaScript中,變量具有或全局或局部的作用域。作用域決定了在代碼何處定義和訪問變量。我們可以在程序中的任何位置,甚至函數之外定義全局變量。而局部變量僅用于定義的函數中。aON28資訊網——每日最新資訊28at.com

如果存在同名的局部變量和全局變量,那么JavaScript將優先考慮局部變量并忽略全局變量。我們應避免使用全局變量,因為全局變量可能會意外覆蓋窗口變量,從而導致錯誤。aON28資訊網——每日最新資訊28at.com

此外,過多的全局變量會減慢程序速度,因為在窗口關閉之前不會刪除全局變量,而局部變量會在函數完成后刪除。aON28資訊網——每日最新資訊28at.com

<html>      <script>            var myVar = "my global variable"; // This variable is declared as global            function localVariable( ) {               var myVar = "my local variable";  // This is a locally declared variable      </script>   </body></html>

8. 使用速記符號(對象文字)

在JavaScript中設計對象或數組時,可以通過選擇速記符號來節省空間。實現方式是在聲明期間而不是之后設置對象或數組的屬性。aON28資訊網——每日最新資訊28at.com

這樣做,我們就不必確定在每一行上設置了哪個對象或數組,從而使這部分代碼更易于閱讀。雖然是一個很小的變化,但隨著對象和數組逐漸變得復雜,絕對可以為你的團隊節省很多時間。aON28資訊網——每日最新資訊28at.com

例如創建一個對象aON28資訊網——每日最新資訊28at.com

普通寫法:aON28資訊網——每日最新資訊28at.com

var computer = new Object();    computer.caseColor = 'black';    computer.brand = 'Dell';    computer.value = 1200;    computer.onSale = true;

速記寫法:aON28資訊網——每日最新資訊28at.com

var computer = {    caseColor: 'black';    brand: 'Dell';    value: 1200;    onSale: true;}

速記數組:aON28資訊網——每日最新資訊28at.com

var computerBrands = ['Dell','Apple','Lenovo','HP','Toshiba','Sony'];

9. 使用嚴格模式捕獲靜默錯誤

與其他編程語言(如C++和Java)相比,JavaScript是一種語法非常寬松的語言。雖然這種寬大處理有助于在不引發錯誤的情況下運行代碼,但可能會導致隱形的錯誤。所以我們需要解決隱形的靜默錯誤,否則可能會導致意料之外的行為。aON28資訊網——每日最新資訊28at.com

解決方案就是嚴格模式。包括兩項主要更改:aON28資訊網——每日最新資訊28at.com

  • 以前可以通過編譯器的靜默錯誤現在會引發錯誤
  • 修復了阻止JavaScript優化代碼的錯誤
  • JavaScript Strict Code程序通常比非嚴格模式下的程序運行得更快。

或者在腳本部分的頂部,或者在所需功能之前(部分嚴格),添加'use strict';即可進入嚴格模式。aON28資訊網——每日最新資訊28at.com

10. 設置默認值

創建對象時,可以為對象的部分或全部屬性設置默認值。這樣做不僅可確保每個屬性的值都不是undefined,而且還聲明了屬性所需的數據類型。此外,通過不為某些屬性設置默認值,還可以向團隊傳達對象正常運行不需要這些值的意思。aON28資訊網——每日最新資訊28at.com

function logProperty({    address = '111 11th Street, 11111',     unit,   //optional    landlord = 'Sara',     tenant = 'Raj',     rent = 500, })

上面的代碼中,unit屬性可選,但其他四個屬性(預期的數據類型)都必須有默認值。為此,unit留空。aON28資訊網——每日最新資訊28at.com

11. 使用模板字面量組合字符串

組合字符串可太麻煩了,尤其是在組合字符串和變量時。我們可以使用模板字面量(用反引號標記),簡化組合過程,因為模板字面量同時接受字符串和變量。aON28資訊網——每日最新資訊28at.com

function greet(name) {    return `Hi, ${name}`; //template literal}console.log(greet('Leo'));

注意,通過使用模板字面量,我們可以根據傳遞的名稱、組合字符串Hi和變量name傳遞的值來記錄對用戶的問候語。因此,此代碼打印:Hi, LeoaON28資訊網——每日最新資訊28at.com

12. 使用includes解決存在性測試

測試數組中值是否存在是一個常見問題。值得慶幸的是,JavaScript有一個特殊的數組方法include()——如果數組包含搜索值,則返回布爾值。不用搜索數組,這是一種高效、易于閱讀的解決方案。aON28資訊網——每日最新資訊28at.com

const sections = ['contact', 'shipping']; function displayShipping(sections) {    return sections.includes('shipping');} console.log(displayShipping(sections));

此外,還有indexOf()方法可用于檢查值以及查找索引。aON28資訊網——每日最新資訊28at.com

13. 用falsy值縮短條件

在JavaScript的跨變量類型中,有一些值等效于false,包括:aON28資訊網——每日最新資訊28at.com

  • 布爾值false
  • null
  • 0
  • NaN
  • ' '
  • " "

在 JavaScript 中,等效的==意味著兩個對象共享相同的值,但它們可能不是相同的類型。完全相同的===表示兩個對象類型相同,值也相同。這有什么用呢?aON28資訊網——每日最新資訊28at.com

好吧,與其創建單獨的變量來保存布爾值,不如使用上述值作為默認值來報告false,如果沒有任何東西覆蓋的話。比如下面的例子,你需要檢查給定的員工是否接受過設備培訓(equipmentTraining)。這臺機器只需要最低級別的培訓,培訓水平并不重要。aON28資訊網——每日最新資訊28at.com

因此,我們用if語句檢查equipmentTraining是否具有falsy值,即默認的' '。如果是,則執行if語句并返回員工未獲得授權。如果equipmentTraining包含除默認值以外的任何字符串,則表示具有truthy值,因此不會執行if語句。aON28資訊網——每日最新資訊28at.com

const employee = {    name: 'Eric',    equipmentTraining: '',} if (!employee.equipmentTraining) {    console.log('Not authorized to operate machinery');}

14. 通過繼承共享方法

繼承涉及在類之間共享屬性或方法。下面的示例中使用super標簽實現繼承,允許FlashCoupon中的構造函數訪問Coupon中的父構造函數。只需定義一次方法(在父類中),即可增強代碼的可讀性。代碼也變得更加模塊化,因為繼承器類可以專門用于給定任務。aON28資訊網——每日最新資訊28at.com

注意,頂部的代碼框建立了父類Coupon,其屬性和方法共享到FlashCoupon,如FlashCoupon在其最后一行調用getExpirationMessage方法時看到的那樣。aON28資訊網——每日最新資訊28at.com

class Coupon {  constructor(price, expiration) {    this.price = price;    this.expiration = expiration || 'Two Weeks';  }  getExpirationMessage() {    return `This offer expires in ${this.expiration}`;  }}export default Coupon;
import Coupon from './extend'; class FlashCoupon extends Coupon {    constructor(price, expiration) {        super(price);        this.expiration = expiration || 'two hours';    }} const flash = new FlashCoupon(10);console.log(flash.getExpirationMessage());

15. 使用數組方法編寫較短的循環

最后一個小貼士,我們將深入探討數組優化的復雜性。循環是創建和填充數組的常用方法。但是,循環會導致代碼雜亂且難以閱讀。aON28資訊網——每日最新資訊28at.com

因此,我們可以使用數組方法來實現類似的效果,例如for只需若干代碼行即可循環。以下面的for循環為例。aON28資訊網——每日最新資訊28at.com

const prices = ['1.0', 'negotiable', '2.15']; const formattedPrices = [];for (let i = 0; i < prices.length; i++) {    const price = parseFloat(prices[i]);    if (price) {        formattedPrices.push(price);    }}console.log(formattedPrices);

我們可以通過三行map方法實現與上面代碼相同的效果。此方法創建了一個大小相等的數組,只有price屬性。然后使用parseFloat獲取價格的浮點值。aON28資訊網——每日最新資訊28at.com

const prices = ['1.0', '2.15'];const formattedPrices = prices.map(price => parseFloat(price));console.log(formattedPrices)

總結

對簡潔代碼的追求是一個持續的旅程,因為最佳實踐會隨著語言的不斷發展而不斷改善。這個過程也是軟件開發樂趣的一部分,學習最佳實踐有助于開發人員真正掌握編程語言。大家加油!aON28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-78298-0.html你不可不知的 15 個 JavaScript 小貼士

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 又出新JS運行時了!JS運行時大盤點

下一篇: 還在重復創建對象?快試試通過享元模式減少對象創建

標簽:
  • 熱門焦點
  • 紅魔電競平板評測:大屏幕硬實力

    前言:三年的疫情因為要上網課的原因激活了平板市場,如今網課的時代已經過去,大家的生活都恢復到了正軌,這也就意味著,真正考驗平板電腦生存的環境來了。也就是面對著這種殘酷的
  • 6月iOS設備性能榜:M2穩居榜首 A系列只能等一手3nm來救

    沒有新品發布,自然iOS設備性能榜的上榜設備就沒有什么更替,僅僅只有跑分變化而產生的排名變動,畢竟蘋果新品的發布節奏就是這樣的,一年下來也就幾個移動端新品,不會像安卓廠商,一
  • 6月安卓手機性價比榜:Note 12 Turbo斷層式碾壓

    6月份有一個618,雖然這是京東周年慶的日子,但別的電商也都不約而同的跟進了,反正促銷沒壞處,廠商和用戶都能滿意。618期間一些產品也出現了歷史低價,那么各個價位段的產品性價比
  • 5月安卓手機好評榜:魅族20 Pro奪冠

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年5月1日至5月31日,僅限國內市場。第一名:魅族20 Pro好評率:97.50%不得不感慨魅族老品牌還
  • 三言兩語說透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是兩種很有用的技術,可以幫助我們寫出更加優雅、泛用的函數。本文將首先介紹柯里化和反柯里化的概念、實現原理和應用
  • 最“俊美”淘寶賣家,靠直播和短視頻圈粉,上架秒光,年銷3000萬

    來源 | 電商在線文|易琬玉編輯|斯問受訪店鋪:Ringdoll戒之人形圖源:微博@御座的黃山、&ldquo;Ringdoll戒之人形&rdquo;淘寶店鋪有關外貌的評價,黃山已經聽累了。生于1985年的他,哪
  • iQOO 11S新品發布會

    iQOO將在7月4日19:00舉行新品發布會,推出杭州亞運會電競賽事官方用機iQOO 11S。
  • 2299元起!iQOO Pad開啟預售:性能最強天璣平板

    5月23日,iQOO如期舉行了新品發布會,除了首發安卓最強旗艦處理器的iQOO Neo8系列新機外,還在發布會上推出了旗下首款平板電腦——iQOO Pad,其搭載了天璣
  • 親歷馬斯克血洗Twitter,硅谷的苦日子在后頭

    文/劉哲銘  編輯/李薇  馬斯克再次揮下裁員大刀。  美國時間11月14日,Twitter約4400名外包員工遭解雇,此次被解雇的員工的主要工作為內容審核等。此前,T
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久大逼视频| 亚洲伊人一本大道中文字幕| 国产人成精品一区二区三| 国产欧美激情| 在线成人www免费观看视频| 亚洲国产精品久久精品怡红院| 欧美va亚洲va香蕉在线| 欧美国产一区二区三区激情无套| 欧美日韩色婷婷| 国产麻豆视频精品| 亚洲第一级黄色片| 亚洲特色特黄| 久久人91精品久久久久久不卡| 欧美韩国日本综合| 国产精品久线观看视频| 一区二区在线视频| 中文av字幕一区| 久久蜜桃av一区精品变态类天堂| 欧美日韩国产综合网| 国产欧美日韩在线播放| 亚洲经典三级| 性欧美长视频| 欧美精品一区二区三区在线看午夜| 国产精品区免费视频| 亚洲大片在线| 午夜精品亚洲| 欧美日韩aaaaa| 黄色成人在线网址| 亚洲一区免费观看| 欧美成人黑人xx视频免费观看| 国产精品久久久久秋霞鲁丝| 亚洲国内自拍| 性欧美xxxx视频在线观看| 欧美人与性动交cc0o| 国内精品亚洲| 亚洲一区在线观看免费观看电影高清| 老司机久久99久久精品播放免费| 欧美性大战xxxxx久久久| 1769国产精品| 欧美一站二站| 欧美小视频在线观看| 亚洲国产精品成人精品| 欧美制服丝袜| 国产精品久久久久久久久免费 | 亚洲二区在线视频| 亚洲欧美日韩国产| 欧美日韩在线三区| 91久久精品国产91久久| 久久精视频免费在线久久完整在线看| 欧美日韩综合视频| 亚洲黄色免费网站| 久久精品一区二区三区四区 | 亚洲午夜视频| 久久伊人精品天天| 国产亚洲一级| 亚洲欧美日本视频在线观看| 欧美日韩伦理在线免费| 亚洲第一成人在线| 久久久久久伊人| 国产日韩欧美在线观看| 亚洲图片你懂的| 欧美日韩成人| 亚洲免费av片| 欧美福利一区二区| 亚洲福利电影| 老牛嫩草一区二区三区日本| 国产一区二区在线观看免费| 香蕉久久一区二区不卡无毒影院| 欧美四级电影网站| 99精品欧美一区二区三区| 欧美极品影院| 亚洲精品乱码久久久久久久久| 美女视频黄免费的久久| 一区精品在线| 老司机精品视频一区二区三区| 狠狠色狠狠色综合日日五| 久久国产精品一区二区三区| 国产欧美精品日韩精品| 亚洲欧美一区二区在线观看| 国产精品久久久久999| 一区二区福利| 欧美色123| 亚洲视频大全| 国产精品日韩欧美大师| 亚洲欧美视频在线观看视频| 国产精品亚洲精品| 欧美一区二区三区视频免费播放 | 久久综合激情| 亚洲国产成人久久综合| 另类天堂av| 亚洲国产小视频在线观看| 蜜桃久久av| 亚洲精品日韩在线观看| 欧美色视频一区| 亚洲午夜激情| 国产精品爽爽爽| 久久av资源网站| 在线 亚洲欧美在线综合一区| 榴莲视频成人在线观看| 亚洲日韩成人| 欧美日韩中文字幕日韩欧美| 亚洲欧美日韩另类精品一区二区三区| 国产女人18毛片水18精品| 久久精品国产一区二区三区| 影院欧美亚洲| 欧美精品一区二区三区在线播放| av成人动漫| 国产精品一区=区| 久久亚洲一区二区| 亚洲精品视频在线看| 欧美四级剧情无删版影片| 亚洲欧美一区二区激情| 国产专区欧美精品| 欧美成人在线网站| 亚洲午夜一区二区| 国产一区二区久久久| 亚洲精品黄网在线观看| 欧美精品久久一区二区| 亚洲性夜色噜噜噜7777| 国产一区二区剧情av在线| 米奇777在线欧美播放| 一本到高清视频免费精品| 国产精品一二| 噜噜噜在线观看免费视频日韩| 亚洲理伦在线| 国产欧美精品日韩精品| 免费看黄裸体一级大秀欧美| 夜夜精品视频| 国产在线精品自拍| 欧美金8天国| 亚欧美中日韩视频| 亚洲精品在线二区| 国产日韩一区二区三区在线| 欧美成人一区二免费视频软件| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 日韩视频在线免费观看| 国产精品影片在线观看| 老色鬼久久亚洲一区二区| 亚洲夜间福利| 亚洲高清网站| 国产精品美女午夜av| 欧美成人精品激情在线观看| 亚洲欧美中文字幕| 亚洲国产精品美女| 国产精品一区二区男女羞羞无遮挡 | 亚洲第一天堂无码专区| 国产精品久久国产精麻豆99网站| 久久一区二区三区四区五区| 亚洲一区二区三区午夜| 亚洲第一黄色网| 国产精品久久97| 欧美大片在线看免费观看| 欧美一区二区三区免费观看视频 | 亚洲欧美另类中文字幕| 亚洲高清久久网| 国产午夜精品理论片a级大结局| 欧美成人在线免费观看| 久久激情综合网| 亚洲午夜精品视频| 91久久在线观看| 国产一区二区三区黄视频| 欧美日韩一区二区视频在线| 久久综合九色| 久久国内精品视频| 亚洲欧美日韩一区在线| 亚洲精品综合精品自拍| 激情久久五月天| 国产精品视频不卡| 欧美日韩一区三区| 欧美激情视频网站| 老色批av在线精品| 久久久99精品免费观看不卡| 国产麻豆午夜三级精品| 欧美激情一区二区三区成人| 久久久久久网址| 性感少妇一区| 亚洲一区二区三区成人在线视频精品| 亚洲人体偷拍| 亚洲电影免费观看高清| 精品不卡一区二区三区| 国产日韩欧美高清| 国产精品视频一区二区三区| 欧美日韩一区在线视频| 欧美久久久久中文字幕| 欧美aa国产视频| 免费91麻豆精品国产自产在线观看| 欧美在线一级视频| 欧美一级在线视频| 亚洲欧美视频| 亚洲女优在线| 亚洲欧美www| 亚洲一区激情| 亚洲永久免费精品| 亚洲一区免费观看| 在线亚洲欧美专区二区| aa级大片欧美三级| 99国产精品久久久| av不卡免费看| 91久久久亚洲精品| 欧美日韩日韩| 亚洲激情成人| 久久精品毛片| 亚洲与欧洲av电影| 最新精品在线|