更快學(xué)習(xí) JavaScript 的 6 個(gè)思維技巧
我們?cè)趯W(xué)習(xí)JavaScript,或其他任何編碼技能的時(shí)候,往往是因?yàn)檫@些攔路虎而裹足不前:
-
有些概念可能會(huì)造成混淆,尤其當(dāng)你是從其他語(yǔ)言轉(zhuǎn)過(guò)來(lái)的時(shí)候。
-
找不到時(shí)間(有時(shí)是動(dòng)力)學(xué)習(xí)。
-
很容易忘記已經(jīng)理解了的東西。
-
工具多又在不斷變化,所以不知道從哪里開(kāi)始。
幸運(yùn)的是,這些攔路虎是可以被識(shí)別,并消滅的。在這篇文章中,我將介紹六個(gè)思維技巧來(lái)幫助你更快地學(xué)習(xí)JavaScript,并成為一個(gè)更快樂(lè)、更富有成效的程序員。
1.不要讓未來(lái)的決策阻止你現(xiàn)在前進(jìn)的方向
很多人學(xué)習(xí)JavaScript,問(wèn)的第一個(gè)問(wèn)題往往是“我應(yīng)該使用哪個(gè)框架?”。但是,如果你還沒(méi)有掌握最最基礎(chǔ)的JavaScript,那這顯然是一個(gè)錯(cuò)誤的問(wèn)題。你將你所有的時(shí)間用來(lái)研究不同的框架,于是,你開(kāi)始停滯不前。
幫助擺脫這種陷阱的方法之一是畫(huà)一個(gè)你需要學(xué)習(xí)的路線(xiàn)圖。例如,要想成為一個(gè)前端開(kāi)發(fā)者,你的路線(xiàn)圖可能是這樣的:
進(jìn)一步分解的話(huà),你可以做一個(gè)只有HTML和CSS的功能性web頁(yè)面。然后像這樣一步步列出每個(gè)步驟,那么對(duì)于現(xiàn)在應(yīng)該專(zhuān)注于做什么,就一目了然了。你也不會(huì)浪費(fèi)時(shí)間去擔(dān)心應(yīng)該以后操心的事情。
如果你覺(jué)得這種路線(xiàn)圖很有用,那么可以看看我以前寫(xiě)的《learning road map for becoming a front-end developer》,里面介紹得很詳細(xì)。(注:對(duì)于學(xué)習(xí)JavaScript的路線(xiàn),你也可以參考學(xué)習(xí)Javascript的8張思維導(dǎo)圖這篇文章)
2.不要讓自信誘騙你忘事
快速了解一個(gè)概念,也許是學(xué)習(xí)JavaScript的道路上最影響你進(jìn)步的事情之一。下面請(qǐng)?jiān)试S我解釋一下。
當(dāng)你讀到某些東西,你覺(jué)得的確如此的,那么很可能就會(huì)直接跳到下一個(gè)內(nèi)容。然后你覺(jué)得接下來(lái)這個(gè)內(nèi)容也非常淺顯易懂,于是繼續(xù)往下看。但很快,你會(huì) 發(fā)現(xiàn)你已經(jīng)忘記了前面自認(rèn)為已經(jīng)掌握的內(nèi)容,所以只能回過(guò)頭去溫習(xí)。你快速地瀏覽了一遍,感覺(jué)又明白了,然后繼續(xù)前進(jìn)。但是你又發(fā)現(xiàn)自己忘記了別的東西。 你一直處在這個(gè)循環(huán)中,直到最終迷失了自己。你不由地氣餒,想著那先休息一下吧,然而當(dāng)你休息完了再回來(lái)的時(shí)候,你發(fā)現(xiàn)你已經(jīng)忘記了所有的內(nèi)容。
解決這個(gè)問(wèn)題,也很簡(jiǎn)單,只需要兩步:
-
限制一次學(xué)習(xí)的量。
-
實(shí)踐——實(shí)際編寫(xiě)代碼。
當(dāng)你去學(xué)習(xí)一個(gè)新概念的時(shí)候,一定要試用它,擺弄它,熟悉它,甚至將它和其他概念結(jié)合起來(lái)。而且實(shí)際輸出到示例代碼中非常重要,因?yàn)檫@能幫助你消化吸收它。此外,限制一次學(xué)習(xí)的量,有助于記住資料,道理也很簡(jiǎn)單,東西越少越好記。
雖然這種學(xué)習(xí)進(jìn)程會(huì)讓你感覺(jué)所需的時(shí)間更多,但實(shí)際上恰恰相反,因?yàn)槟悴辉傩枰吣敲炊嗟幕仡^路。我也是經(jīng)過(guò)了很多次慘不忍睹的教訓(xùn)才明白了這個(gè)技巧。
3.用正確的心態(tài)去做練習(xí)
很多人認(rèn)為反復(fù)的練習(xí)特別無(wú)聊,所以他們通常會(huì)選擇跳過(guò)或嘗試走捷徑。如果你快進(jìn)JavaScript練習(xí),那么最終反而需要更多的學(xué)習(xí)時(shí)間。試著讓練習(xí)變得令人感興趣,這樣是不是就不會(huì)那么抗拒呢?
試著轉(zhuǎn)變心態(tài):
如果讓你學(xué)習(xí)一個(gè)新的JavaScript概念,卻不能試試,會(huì)怎么樣?你是什么感覺(jué)?從我個(gè)人而言,我會(huì)特別懊惱。這就像一個(gè)孩子得到一個(gè)新的玩具,卻不能玩一樣。
當(dāng)你學(xué)習(xí)JavaScript中一些新內(nèi)容的時(shí)候,試著將它當(dāng)作新玩具,新車(chē),新鞋,或者其他任何你有興趣嘗試的東西。然后不要將練習(xí)當(dāng)作工作,要將練習(xí)當(dāng)作是玩耍。用新技能去嘗試一些很酷的東西。讓你自己都不由的驚嘆。然后顯擺給你的朋友看。
用一種游戲的心態(tài),你會(huì)學(xué)得更快,記得更久,擁有更多的樂(lè)趣。
4.寫(xiě)代碼的時(shí)間魔法
在學(xué)習(xí)JavaScript中最常見(jiàn)的問(wèn)題是,找不到時(shí)間寫(xiě)代碼。但是,與此同時(shí),卻有大把大把的時(shí)間瀏覽各種網(wǎng)站,如Facebook,YouTube,維基百科和Reddit等。
我有好幾次,一開(kāi)始只是想打開(kāi)Facebook,看一小會(huì),然后不知不覺(jué)就發(fā)現(xiàn)已經(jīng)看了幾個(gè)小時(shí)。這是怎么發(fā)生的呢?或許正是因?yàn)槲也⒉淮蛩憧春荛L(zhǎng) 時(shí)間。萬(wàn)事開(kāi)頭難,一旦開(kāi)了頭,后面陷進(jìn)去就變得容易多了。但是如果有人問(wèn)我,是否愿意花時(shí)間在Facebook上,我會(huì)堅(jiān)決地說(shuō)不,因?yàn)槲冶旧頃r(shí)間就不 夠用。然而,只允許看一會(huì)會(huì)時(shí)間往往更容易接受,然后深陷其中。
好消息是,你也可以利用同樣的心理來(lái)學(xué)習(xí)寫(xiě)代碼。一開(kāi)始不要想著要編碼幾小時(shí),因?yàn)槟阌肋h(yuǎn)找不到這么多的時(shí)間。就告訴自己你要去寫(xiě)3分鐘的代碼。這樣你永遠(yuǎn)也不用愁擠不出時(shí)間了。
5.思考得更慢,學(xué)得更快
這聽(tīng)起來(lái)貌似有悖常理,下面我會(huì)用一個(gè)小故事解釋。
我的一個(gè)朋友曾經(jīng)對(duì)JavaScript的某個(gè)功能感到困惑。于是,我讓他詳細(xì)地說(shuō)一遍哪些是他知道的,然后給他解釋他感到困惑的那部分。不過(guò),當(dāng)他檢查代碼片段的時(shí)候,我注意到有一段代碼,他說(shuō)得非常倉(cāng)促。
“等一下!”我說(shuō), “慢點(diǎn)講,每一步都詳細(xì)地說(shuō)一下。”
我的朋友繼續(xù)給我做代碼發(fā)生了什么的全面總結(jié)。
我只好再次叫住他。 “你還是太倉(cāng)促了。再試一次,但這次,我希望你能從字面上去檢查每一行代碼,告訴每一行的代碼都發(fā)生了什么。”
這次,我的朋友終于能夠很好地解釋代碼中正在發(fā)生什么。問(wèn)題的關(guān)鍵是,他終于可以一步一步地檢查了代碼片段,而不是囫圇吞棗想要一次性理解所有代碼。
在類(lèi)似于這樣的情況下,思考得更慢實(shí)際上能讓你學(xué)得更快。
6.首先用簡(jiǎn)明的語(yǔ)言來(lái)寫(xiě)復(fù)雜的代碼
如果碰到一段復(fù)雜的或你不熟悉的代碼,那么先用通俗易懂的語(yǔ)言寫(xiě)出來(lái)。這樣一來(lái),你就可以在寫(xiě)代碼之前明確地知道你想要代碼做什么。這么做有兩個(gè)好處:
-
代碼更易寫(xiě),因?yàn)槟悴恍枰偸峭O聛?lái)想,你想要它表現(xiàn)什么。
-
在bug發(fā)生之前就能捕捉到,因?yàn)槟銓?duì)代碼應(yīng)該做什么有一個(gè)明確的概念。
結(jié)論
我們已經(jīng)討論了一堆如何更快地學(xué)習(xí)JavaScript的方法,而且你也可以將這些技巧應(yīng)用到其他的技能上。下面來(lái)回顧一下:
-
不要擔(dān)心以后會(huì)做什么決策,先好好深入學(xué)習(xí)。
-
將新技能當(dāng)作玩具一般快樂(lè)地練習(xí)。
-
以小承諾的方式找時(shí)間來(lái)寫(xiě)代碼,就像你一開(kāi)始安慰自己只逛一小會(huì)時(shí)間網(wǎng)站。
-
慢下來(lái),步子邁的越小,學(xué)得越快。
對(duì)了,你是怎么學(xué)習(xí)的?你有什么好的技巧嗎?或者,你認(rèn)為我說(shuō)的全是一派胡言,唯一的學(xué)習(xí)途徑就是一天12小時(shí)地投入進(jìn)去?無(wú)論是什么,歡迎不吝點(diǎn)評(píng)。
譯文鏈接:http://www.codeceo.com/article/6-ways-learn-javascript-fast.html
英文原文:Six Simple Mind Tricks to Help You Learn JavaScript Faster