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 技術週刊 #
「技術週刊」是社區特別推出的技術內容系列,一週一主題。
每週二更新,歡迎「關注」。大家也可以在評論處留言自己感興趣的主題,推薦主題相關的優秀文章。
如有問題可以添加小姐姐微信~