Stories

Detail Return Return

SegmentFault 思否技術週刊 Vol.68 — JavaScript 有哪些高階玩法? - Stories Detail

JavaScript 是一門弱類型的動態腳本語言,支持多種編程範式,包括面向對象和函數式編程,被廣泛用於 Web 開發。

一般來説,完整的 JavaScript 包括以下幾個部分:

  • ECMAScript,描述了該語言的語法和基本對象
  • 文檔對象模型(DOM),描述處理網頁內容的方法和接口
  • 瀏覽器對象模型(BOM),描述與瀏覽器進行交互的方法和接口

它的基本特點如下:

  • 是一種解釋性腳本語言(代碼不進行預編譯)。
  • 主要用來向 HTML 頁面添加交互行為。
  • 可以直接嵌入 HTML 頁面,但寫成單獨的 js 文件有利於結構和行為的分離。

本期技術週刊一起了解下 JavaScript ,歡迎大家閲讀 ~

文章推薦

《如何在 JavaScript 中使用高階函數》作者:chuck

你也許聽説過,JavaScript 函數是一等公民。這意味着,在 JavaScript 中函數是對象。

它們的類型是 Object,它們可以作為一個變量的值被分配,而且它們可以像其他引用變量一樣被傳遞和返回。

一等函數賦予了 JavaScript 特殊的能力,使我們能夠從高階函數中獲益。

由於函數是對象,且 JavaScript 是流行的編程語言之一,因此其支持函數式編程的原生方法。

事實上,一等函數是 JavaScript 的原生方法。我敢打賭你在使用他們的時候甚至都沒有想過正在使用函數。

《一個關於 D3js 學習的倉庫建立了!》 作者:wlove

  • D3 內部模塊的深入講解 有一個系統整體認知
  • Analysis- examples 分析場景的例子
  • Observable D3 團隊分享示例的環境介紹

第一點作為重點, 本系列會完整涵蓋 D3 概念, 比如:選擇、連接、數據請求、縮放函數、事件處理和轉換。

《我讓虛擬 DOM 的 diff 算法過程動起來了》 作者:街角小林

去年寫了一篇文章手寫一個虛擬 DOM 庫,徹底讓你理解 diff 算法介紹虛擬 DOM 的 patch 過程和 diff 算法過程,當時使用的是雙端 diff 算法,今年看到了 Vue3 使用的已經是快速 diff 算法,所以也想寫一篇來記錄一下,但是肯定已經有人寫過了,所以就在想能不能有點不一樣的,上次的文章主要是通過畫圖來一步步展示 diff 算法的每一種情況和過程,所以就在想能不能改成動畫的形式,於是就有了這篇文章。當然目前的實現還是基於雙端 diff 算法的,後續會補充上快速 diff 算法。

《JavaScript 的異步編程之 Promise》 作者:開水泡飯

一種更優的異步編程統一 方法,如果直接使用傳統的回調函數去完成複雜操作就會形成回調深淵

// 回調深淵
$.get('/url1'() => {
  $.get('/url2'() => {
    $.get('/url3'() => {
      $.get('/url4'() => {
        $.get('/url5'() => {
          // 大概就是這樣子的
        })
      })
    })
  })
})

CommonJS 社區提出了 Promise 規範,在 ES2015 中被標準化,成為語言規範。當等待狀態改編程成功或者失敗之後就再也不能再被改變了,成功的時候觸發 onFulfilled 回調,失敗的時候觸發 onRejected 回調

《藉助 CI / CD 實現前端應用的快速回滾》 作者:皮小蛋

在上一輪優化裏,我們通過優化一些構建工具和流程,把構建耗時優化到了 4min 左右,整體發佈耗時從 15min 優化到了 8 min 左右, 有較大提升, 但是依舊存在提升空間。經過一些思考與測試,給出技術方案,並落地到了 WMS 業務中, 效果如下:

圖片

與原流程相比之, 發佈耗時由 8 min 降低到了 1 ~2 min 左右。下面我主要介紹一下方案細節,總結改造過程中遇到的問題, 希望對大家有所幫助。

《JavaScript 中的可變性與不可變性》 作者:記得要微笑

還是先來看看關於可變性( Mutability )的教條式定義:“liable or subject to change or alteration (譯者注:真他媽難翻,就簡單理解成'易於改變的'吧)”。在編程領域裏,我們用可變性 (Mutability )來描述這樣一種對象,它在創建之後狀態依舊可被改變。那當我們説不可變( Immutable )時,就是可變( Mutable )的對立面了(譯者注:原諒我翻的廢話又多起來) - 意思是,創建之後,就再也不能被修改了。

如果我説的又讓你感到詭異了,原諒我小小的提醒一下,其實我們平時使用的很多東西事實上都是不可變的哦!

var statement = 'I am an immutable value';
var otherStr = statement.slice(8, 17);

問答推薦

  • js 中按位運算會出現精度丟失的問題嗎?
  • js 自動激活當前窗口,如何實現?
  • js 數組的處理?
  • js 去重並統計數量,然後去重後的子級再添加到父級的數組裏去。該怎麼寫呀?
  • JavaScript 觸發 popstate 條件,怎麼繞開“用户點擊頁面”?
  • JS 中如何改造同步 ajax 方法變為異步並讓函數返回值保持為請求結果?
  • js 函數有 2 個參數,元素行內調用該函數如何能只傳一個值?
  • JavaScript 手寫最大併發請求數?
  • 請問 js 中如何降低 alert 的執行優先級?

# SegmentFault 技術週刊 #

「技術週刊」是社區特別推出的技術內容系列,一週一主題。

每週二更新,歡迎「關注」。大家也可以在評論處留言自己感興趣的主題,推薦主題相關的優秀文章。

如有問題可以添加小姐姐微信~

image.png

user avatar toopoo Avatar wojiaocuisite Avatar zengh Avatar stephentian Avatar dexteryao Avatar dushigemi Avatar pengloo53 Avatar tusi_5c8a591841687 Avatar
Favorites 8 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.