本文將講解babel是如何運(yùn)行的账蓉,AST的結(jié)構(gòu)辖所,以及怎么創(chuàng)建一個(gè)babel的插件。 再講babel之前姥卢,先不講babel窍荧,AST的這些概念如庭,先帶你實(shí)現(xiàn)一個(gè)簡(jiǎn)易的babel解析...
![240](https://cdn2.jianshu.io/assets/default_avatar/14-0651acff782e7a18653d7530d6b27661.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/240/h/240)
本文將講解babel是如何運(yùn)行的账蓉,AST的結(jié)構(gòu)辖所,以及怎么創(chuàng)建一個(gè)babel的插件。 再講babel之前姥卢,先不講babel窍荧,AST的這些概念如庭,先帶你實(shí)現(xiàn)一個(gè)簡(jiǎn)易的babel解析...
通過「換一種思路」來解決「異步」問題Rx.js比async還要好 我們的所有網(wǎng)頁應(yīng)用都是異步的:腳本加載播放器數(shù)據(jù)訪問動(dòng)畫DOM事件綁定身冀、數(shù)據(jù)事件綁定 異步編程 我們可以看到...
代碼優(yōu)化基本原則易讀性優(yōu)先如果不是性能瓶頸钝尸,就不要為了性能而改寫代碼復(fù)雜性守恒原則:無論你怎么寫代碼括享,復(fù)雜性都是不會(huì)消失的推論:如果邏輯很復(fù)雜搂根,那么代碼看起來就應(yīng)該是復(fù)雜的。...
標(biāo)準(zhǔn)庫的擴(kuò)充 underscore.js 擴(kuò)充了 Array 和 Object 相關(guān) API moment.js 擴(kuò)充了 Date bluebird.js / hax/my-...
函數(shù)是對(duì)象 JS 中對(duì)象函數(shù)沒有關(guān)系铃辖,JS 之父通過 this 強(qiáng)行使得它們有關(guān)系剩愧。 obj.fn.call(obj, 1,2,3) => obj.fn(1,2,3) 1、參...
封裝:就是隱藏細(xì)節(jié)比如A對(duì)A A對(duì)B 繼承:復(fù)用之前的代碼更好用 多態(tài):靈活div.childNodes 當(dāng)把div當(dāng)成節(jié)點(diǎn)的時(shí)候娇斩,就調(diào)用節(jié)點(diǎn)的APIdiv.child...
回調(diào)的形式 1仁卷、Node.js的error-first形式fs.readFile('./1.txt', (error, content)=>{if(error){// 失敗}...
同步:等待結(jié)果異步:不等待結(jié)果// 同步的 sleepfunction sleep(seconds){var start = new Date()while(new Date...
回調(diào)名詞形式:被當(dāng)做參數(shù)的函數(shù)就是回調(diào)動(dòng)詞形式:調(diào)用這個(gè)回調(diào)注意回調(diào)跟異步?jīng)]有任何關(guān)系 setTimeout(fn,1000)fn作為參數(shù),所以是回調(diào)犬第,然后setTimeou...
每個(gè)函數(shù)都有 return如果你不寫 return锦积,就相當(dāng)于寫了 return undefined 柯里化:將 f(x,y) 變成 f(x=1)(y) 或 f(y=1)x//...
這里的this就是那個(gè)元素div,是函數(shù)call的時(shí)候傳的第一個(gè)參數(shù)——我們的需求是歉嗓,當(dāng)div被點(diǎn)擊的時(shí)候丰介,調(diào)用view里的onClick方法,但是這里是錯(cuò)的,是調(diào)不了的同樣...
this 是隱藏的第一個(gè)參數(shù)哮幢,且一般是對(duì)象function f(){console.log(this)console.log(arguments)}f.call() // w...
詞法樹 fn2里的console.log(local1)里的local1是哪個(gè)local1带膀?先在fn2里找,沒找到的話橙垢,就在同一級(jí)里找(同一級(jí)找不到就往上找)垛叨,這里只是說明了...