11個教程中不常被提及的JavaScript小技巧

来源:https://www.cnblogs.com/doujiang3235/archive/2019/06/22/11068896.html
-Advertisement-
Play Games

這次我們主要來分享11個在日常教程中不常被提及的JavaScript小技巧,他們往往在我們的日常工作中經常出現,但是我們又很容易忽略。 1、過濾唯一值Set類型是在ES6中新增的,它類似於數組,但是成員的值都是唯一的,沒有重覆的值。結合擴展運算符(...)我們可以創建一個新的數組,達到過濾原數組重覆 ...


這次我們主要來分享11個在日常教程中不常被提及的JavaScript小技巧,他們往往在我們的日常工作中經常出現,但是我們又很容易忽略。

1、過濾唯一值Set類型是在ES6中新增的,它類似於數組,但是成員的值都是唯一的,沒有重覆的值。結合擴展運算符(...)我們可以創建一個新的數組,達到過濾原數組重覆值的功能。

[JavaScript] 純文本查看 複製代碼

在ES6之前,我們如果想要實現這個功能的話,需要的處理代碼要多很多。這個技巧的適用範圍是數組中的數值的類型為:undefined, null, boolean, string, number。當包涵object, function, array時,則不適用。

2、短路求值(Short-Circuit Evaluation)三目運算符是一個很方便快捷的書寫一些簡單的邏輯語句的方式,

[JavaScript] 純文本查看 複製代碼

但是有些時候當邏輯複雜之後,三目運算符書寫起來可讀性也會很難。這個時候,我們就可以使用邏輯與(&&)和邏輯或(||)運算符來改寫我們的表達式。

邏輯與和邏輯或操作符總是先計算其做操作數,只有在僅靠左操作數的值無法確定該邏輯表達式的結果時,才會求解其右操作數。這被稱為“短路求值(Short-Circuit Evaluation)”

工作原理與(&&)運算符將會返回第一個false/‘falsy’的值。當所有的操作數都是true時,將返回最後一個表達式的結果。

[JavaScript] 純文本查看 複製代碼

或(||)運算符將返回第一個true/‘truthy’的值。當所有的操作數都是false時,將返回最後一個表達式的結果。

[JavaScript] 純文本查看 複製代碼

場景舉例當我們從伺服器端請求數據的過程中,我們在另一個位置來使用這個數據,但是獲取數據的狀態並不知道,如我們訪問this.state的data屬性。按照常規的方式我們會先去判斷這個this.state.data的有效性,之後根據有效性情況分別進行區分處理。

[JavaScript] 純文本查看 複製代碼

但是我們可以通過上面的方式來簡寫這個邏輯處理

對比發現這個方式更加的簡潔方便。

3、轉換Boolean型常規的boolean型值只有 true 和 false,但是在JavaScript中我們可以將其他的值認為是 ‘truthy’ 或者 ‘falsy’的。

除了0, “”, null, undefined, NaN 和 false,其他的我們都可以認為是‘truthy’的。

我們可以通過負運算符!將一系列的變數轉換成“boolean”型。

[JavaScript] 純文本查看 複製代碼

4、轉換String型我們可以通過+連接運算符將一個number類型的變數轉換成string類型。

[JavaScript] 純文本查看 複製代碼

5、轉換Number類型和上面對應的,我們可以通過加法運算符+將一個string類型的變數轉回為number 類型的

[JavaScript] 純文本查看 複製代碼

在某些上下文中,+將被解釋為連接操作符,而不是加法操作符。當這種情況發生時(您希望返回一個整數,而不是浮點數),您可以使用兩個波浪號:~~。(需要註意為英文格式)

一個波浪號~,被稱為“按位不運算符”,等價於 - n - 1。所以~15 = -16.

使用兩個~~可以有效的否定運算。這是因為 - (- n - 1) - 1 = n + 1 - 1 = n。也就是說 ~-16 = 15

[JavaScript] 純文本查看 複製代碼

6、快速求冪從ES7開始,我們可以使用冪運算符 ** 作為求冪的簡寫,相對之前的Math.pow(2, 3) 更加快捷。這是一個很簡單實用的點,但是大部分的教程並不會專門介紹它。

[JavaScript] 純文本查看 複製代碼

這不應該與 ^ 符號混淆,^ 符號通常用於表示指數,但在JavaScript中是位XOR操作符。

在ES7之前,冪的簡寫主要依靠的是位左移位操作符 <<,幾種寫法的區別

[JavaScript] 純文本查看 複製代碼

其中需要註意的是  2 << 3 = 16 等價於 2 ** 4 = 16

7、快速Float轉Integer我們平時可以使用Math.floor(), Math.ceil()和Math.round()將float類型轉換成integer類型。

但是還有一種更快的方法可以使用|(位或運算符)將浮點數截斷為整數。

[JavaScript] 純文本查看 複製代碼

| 的行為取決於處理的是正數還是負數,所以最好只在確定的情況下使用這個快捷方式。

如果n是正數的,則 n | 0 有效地向下舍入。如果n是負數的,它則有效地向上取整。更準確地說,該操作結果是直接刪除小數點後的內容,將浮點數截斷為整數,和上面提到的其他幾個方法是有所區別的。

您還可以使用 ~~ 來獲得相同的舍入效果,如上所述,實際上任何位操作符都會強制浮點數為整數。這些特殊操作之所以有效,是因為一旦強製為整數,值就保持不變。

如果大家對於學習web前端有任何問題(學習方法,學習效率,如何就業),可以隨時來咨詢我,這是我的web前端交流學習裙:前面是四八四,中間七五七,最後七六零,多多交流問題,互幫互助,群里有學習教程和開發工具
使用場景位或運算符可以用於從整數的末尾刪除任意數量的數字。這意味著我們不必使用這樣的代碼在類型之間進行轉換

[JavaScript] 純文本查看 複製代碼

8、類中自動綁定我們可以在類中通過使用ES6增加的箭頭函數的方式來實現隱形綁定作用域。而按照之前的處理,我們需要顯式的去為我們寫的方法進行綁定,類似於 this.myMethod = this.myMethod.bind(this)這樣。當我們的類中有很多方法時,會增加大量的綁定的代碼的書寫。現在我們就可以通過箭頭函數的方式來簡化這個過程。

[JavaScript] 純文本查看 複製代碼

9、截取數組如果您想從數組的末尾刪除值,有比使用splice()更快的替代方法。

例如,如果你知道原始數組的長度,就可以通過重新定義它的length屬性來實現截取

[JavaScript] 純文本查看 複製代碼

這是一個特別簡潔的解決方案。但是,slice()方法的運行時更快。如果速度是你的主要目標,考慮使用下麵的方式

[JavaScript] 純文本查看 複製代碼

11、格式化JSON代碼我們可能在處理一些JSON相關的處理時很多時候都會使用到JSON.stringify,但是你是否意識到它可以幫助縮進JSON呢?

stringify()方法接受兩個可選參數:一個replacer函數和一個space值,replacer函數可以用來過濾顯示的JSON。

space值接受一個整數,表示需要的空格數或一個字元串(如'\t'來插入製表符),它可以使讀取獲取的JSON數據變得容易得多。

[JavaScript] 純文本查看 複製代碼

總的來說,我希望當您看到這些技巧時能夠和我第一次看到它們一樣覺得有用。如果您有自己發現的小技巧,也希望能夠留言中寫下,我們一起來分享。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、二叉樹概念 二叉樹(binary tree)是一顆樹,其中每個節點都不能有多於兩個的兒子。 位元組一面,第一道就是二叉樹的插入,在這裡其實是對於一個二叉查找樹的插入。 使二叉樹成為二叉查找樹的性質是,對於樹中的每個節點X,它的左子樹中所有項的值小於X中的項目,而它的右子樹所有的項的值大於X中的項。 ...
  • ES6 -箭頭函數,javascript箭頭函數 對象的函數解構 ...
  • 實現起來並不複雜,只需對最左和最右的小球進行關鍵幀動畫處理,同時註意應該將繩子與小球作為一個整體,以左邊小球為例: .left-ball.ball-wrapper { transform-origin: center top; animation: left-ball-swing 4s 0s inf ...
  • ES6-新增的數組操作,數組解構,forEach,fillter,some.map的數組遍歷,數組轉換字元串 ...
  • 大家都知道ExtJS6的部分功能是收費的,比如說D3作圖、數據導出等,6.2免費版只能看不能碰。使用試用版6.5的庫文件,想把這些功能應用到自己的網站上,會給網頁上加試用版的水印,鬱悶!努力跟經銷商談過以後5個license的價格大概需要8w,好貴!(最理解不了的是為什麼要5個license一起買, ...
  • 今天在這裡跟大家分享css基礎最核心的部分,浮動和定位。話不多說,直接上乾貨! 一、浮動 定義:定位元素是相對於其正常位置應該出現的位置。定位元素的位置是相對於自身、父級元素位置、其他元素以及瀏覽器視窗本身的位置。 定位主要分為文檔流定位、浮動、相對定位、絕對定位、固定定位 浮動主要解決的是行內元素 ...
  • S中只有一種類型數,即64位(1bit 的符號位,11bits 的指數部分 ,以及52bits 的小數部分)雙精度浮點數,當整數數值過大時,就會發生精度丟失。 所謂安全整數即能夠唯一確定的數字,即能夠使用64位二進位數唯一確定的整數。考慮253,轉換成對應表示方式後其小數部分總共包括53位,發生了精 ...
  • 1. iconfont採坑 1.1. 前言 1. 使用iconfont過程中踩過坑特此記錄 2. 不知道iconfont的這裡也簡單介紹一筆,阿裡開放的一個圖標素材庫,用來快速找圖標下載使用圖標 3. "iconfont網址" 1.2. 所謂單色 1. iconfont中有些圖標,看著是單色的,也就 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...