原创 前端進擊的巨人(六):知否知否,須知this

常見this的誤解 指向函數自身(源於this英文意思的誤解) 指向函數的詞法作用域(部分情況) this的應用環境 全局環境 無論是否在嚴格模式下,全局執行環境中(任何函數體外部)this都指向全局對象 var name = '以樂

原创 前端進擊的巨人(五):學會函數柯里化(curry)

柯里化(Curring, 以邏輯學家Haskell Curry命名) 寫在開頭 柯里化理解的基礎來源於我們前幾篇文章構建的知識,如果還未能掌握閉包,建議回閱前文。 代碼例子會用到 apply/call ,一般用來實現對象冒充,例如字符串冒

原创 前端進擊的巨人(四):略知函數式編程

系列更文前三篇文章,圍繞了一個重要的知識點:"函數"。函數調用棧、函數執行上下文、函數作用域到閉包。可見不理解函數式編程,代碼都擼不好。  函數是一等公民 函數與其它數據類型一樣,可以作爲值賦給變量,作爲參數傳遞或返回值返回,也可以像對象

原创 前端進擊的巨人(三):從作用域走進閉包

進擊的巨人第三篇,本篇就作用域、作用域鏈、閉包等知識點,一一擊破。 作用域 作用域:負責收集並維護由所有聲明的標識符(變量)組成的一系列查詢,並實施一套非常嚴格的規則,確定當前執行的代碼對這些標識符(變量)的訪問權限——《你不知道的Jav

原创 前端進擊的巨人(一):執行上下文與執行棧,變量對象

寫在開篇 已經不敢自稱前端小白,曾經吹過的牛逼總要一點點去實現。 正如前領導說的,自己喝酒吹過的牛皮,跪着都得含着淚去實現。 那麼沒有年終完美總結,來個新年莽撞開始可好。 進擊巨人系列開篇,不忘初心,砥礪前行。 理解執行上下文 執行上下文

原创 讀書筆記(06) - 語法基礎 - JavaScript高級程序設計

寫在開頭 本篇是小紅書筆記的第六篇,也許你會奇怪第六篇筆記才寫語法基礎,筆者是不是穿越了。 答案當然是沒有,筆者在此分享自己的閱讀心得,不少人翻書都是從頭開始,結果永遠就只在前幾章。對此,筆者換了隨機閱讀的方式,哪章感興趣了或者想補知識點

原创 Vim 利劍常磨,見血封喉

年底了,故事總是會有很多。 剛了一波通宵加班,趁着有時間,過了一遍Vim教程,順便彙總下常用命令。 對於以 OSX / Linux爲開發環境的夥伴們,應該並不陌生。因其輕便,擴展性,可定製化,一直很受開發者追捧。高階大神,袖中必有深藏。

原创 讀書筆記(05) - 事件 - JavaScript高級程序設計

HTML依託於JavaScript來實現用戶與WEB網頁之間的動態交互,接收用戶操作並做出相應的反饋,而事件在此間則充當橋樑的重要角色。 日常開發中,經常會爲某個元素綁定一個事件,編寫相應的業務邏輯,在元素被點擊時執行,並反饋到用戶操作界

原创 讀書筆記(04) - 錯誤監控 - JavaScript高級程序設計

錯誤類型 即時運行錯誤 (代碼錯誤) 資源加載錯誤 常見的錯誤類型 1. 類型轉換錯誤 建議使用全等===操作符 2.數據類型錯誤 建議加強類型判斷 // 數組倒序 function reverseSort(value) {

原创 讀書筆記(03) - 性能 - JavaScript高級程序設計

作用域鏈查找 作用域鏈的查找是逐層向上查找。查找的層次越多,速度越慢。隨着硬件性能的提升和瀏覽器引擎的優化,這個慢我們基本可以忽略。 除了層級查找損耗的問題,變量的修改應只在局部環境進行,儘量避免在局部環境下去操作修改父級變量的值。(re

原创 讀書筆記(02) - 可維護性 - JavaScript高級程序設計

編寫可維護性代碼 可維護的代碼遵循原則: 可理解性 (方便他人理解) 直觀性 (一眼明瞭) 可適應性 (數據變化無需重寫方法) 可擴展性 (應對未來需求擴展,要求較高) 可調試性 (錯誤處理方便定位) 命名方式 變量取名多爲爲名

原创 讀書筆記(01) - JSON - JavaScript高級程序設計

JSON與JavaScript對象 JSON是一種表示結構化數據的存儲格式,語法格式上與JavasScript對象有些類似。 TIPS: 與JavaScript對象的格式區別 不支持變量、函數或對象實例 字符串,屬性名必須使用雙引號 無需