說實(shí)話,不好學(xué),沒HTMl基礎(chǔ)有點(diǎn)難度,JavaScript簡稱JS,之前的基礎(chǔ)就是HTML,HTML這門課程如果入門的話不是很難,刻苦點(diǎn)一月到兩月就能搞定,有HTML基礎(chǔ)的話,只要繼續(xù)刻苦一個(gè)月左右JS就能入門,但是想學(xué)到高深那就不容易了,js入門后在繼續(xù)學(xué)可以說也是有些難度的。總之先掌握HTML,這是一個(gè)基礎(chǔ),正如你說話要先從aoe開始一樣,HTML也很容易學(xué)的
海陵ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
HTML推薦書籍:深入淺出HTML和CSS
JS推薦書籍:《javascript入門經(jīng)典》
這些書籍可以幫助你怎么學(xué)習(xí),其實(shí)不止看書,你也可以看看視頻,多看視頻講解學(xué)習(xí)可以讓你少走很多彎路,節(jié)省不少時(shí)間。遇見問題,常百度一下,現(xiàn)在百度只有你想不到的,沒有你查不到的,沒有你要的答案,也能查到相關(guān)的,何況可以提問嘛……
人就是在不斷的問題中解決問題,發(fā)現(xiàn)新的問題,繼續(xù)解決問題,這樣自己的自學(xué)能力和技術(shù)能夠得到很大的提升,關(guān)鍵就是不懂一定馬上問,千萬不要隨便拖,這樣進(jìn)步才叫快……
還有補(bǔ)充一下,學(xué)習(xí)重在實(shí)踐,因?yàn)橹挥袑?shí)踐你才能更好的發(fā)現(xiàn)自己的問題,一個(gè)問題解決了,一次不記得,下次繼續(xù)做的時(shí)候再手打一次,但是別抄之前自己寫過的代碼,除非你覺得自己這段代碼已經(jīng)掌握了,這樣為了節(jié)省時(shí)間才抄,否則還是練練手最好,,萬變不離其宗——熟能生巧……
如果你精通了,那就好辦了,一個(gè)網(wǎng)站可能就被你開發(fā)出來,然后就不愁找不到好工作了,至于你認(rèn)為學(xué)到什么地步算精通,這你自己在學(xué)習(xí)中就可以感受到自己的能力,說的夠多了,一時(shí)說不完,就這樣,最后祝你成功,嘎嘎嘎嘎……
先講一下自己吧。 大一,學(xué)校不讓帶電腦。偶然的機(jī)會(huì)下對(duì)前端產(chǎn)生了興趣,大神學(xué)長們都推薦看這本書,然后就在沒有代碼實(shí)踐的情況下研究這本書。之前有pascal與c的基礎(chǔ),匆匆翻了一遍之后出現(xiàn)第一個(gè)問題:
對(duì)面向?qū)ο笥懈拍睿静皇煜ぃ季S還是停留在面向過程中,最嚴(yán)重的是自己覺得懂了。
然后在頗有自信的情況下去讀了第二遍,主要研究原型和編程模式的東西,出現(xiàn)了第二個(gè)問題:
有誤解,理解不透徹,有些急,最嚴(yán)重的是自己沒意識(shí)到這些。
然后快要期末考試了,各種高數(shù)大物,放下了一陣,偶爾看看一些零散的東西,也沒太記住。
轉(zhuǎn)
折出現(xiàn)在這個(gè)寒假,到家后還在看這本書,主要看閉包,沒幾天有了自己的電腦,終于迎來了代碼實(shí)踐,但當(dāng)時(shí)特別想架站,就去看深入淺出nodejs(真心是
本好書,會(huì)上癮的那種精彩),這本書我還看不太懂,但我在讀他的時(shí)候突然意識(shí)到了自己之前看的js高級(jí)程序設(shè)計(jì)根本沒看到家,連門都沒摸到,然后重新去
讀,又有了一些新的感悟和動(dòng)力,然后這兩本書穿插著讀,在看一些偏應(yīng)用的知識(shí),感覺好充實(shí),這種充實(shí)是種很棒的讀下去的動(dòng)力。
回到你的問題,直到現(xiàn)在,我仍然為自己在學(xué)習(xí)時(shí)無名的焦躁,急切,挫敗感,無知的自信,自以為是感到深深地后怕,但現(xiàn)在自己還沒擺脫他們。我很理解你的問題,我的建議就是簡單的“不要著急,靜下心來慢慢看”。
如果你像我一樣基礎(chǔ)不好,就別想著會(huì)讀著多順利,可以先適當(dāng)放一下難點(diǎn),多想想是什么亂七八糟的需求產(chǎn)生了這樣亂七八糟的代碼,理解到了就會(huì)深深地感受的這些創(chuàng)作者的智慧。
1、JavaScript 是一種直譯式腳本語言,是一種動(dòng)態(tài)類型、弱類型、基于原型的動(dòng)態(tài)腳本語言,內(nèi)置支持類型。主要應(yīng)用于WEB前端使用。
2、從語言本身的難度上來說,javaScript的難度要大大低于JAVA、C++等編譯型的語言。但是很多學(xué)生都覺得JS難,這個(gè)問題在于javaScript這門語言比較靈活,他的好處就是靈活,但是這個(gè)靈活不理解的話,往往都會(huì)覺得難。
3、總的來說,javaScript屬于易學(xué)難精的那種,他的入門還是比較簡單的,就是后期高級(jí)別的難度比較大。
4、初學(xué)者不需要有畏難情緒,多看多學(xué)多練。一定要多動(dòng)手寫代碼,多寫幾遍就能明白代碼的含義了。
5、希望對(duì)你有幫助,祝你學(xué)有所得。
喜歡的人自然喜歡,不喜歡的人主要是對(duì)css和事件討厭。
js這種不嚴(yán)格的語言也可以用嚴(yán)格的語法,相對(duì)比較輕松上手,寫其他語言的人也可以輕松入門。
但是js在深層次當(dāng)中,會(huì)涉及css,html和事件、原型鏈等,所以有些人遇到這些的時(shí)候會(huì)不喜歡。
如果學(xué)到精通的話,找工作是能的,而且工作不會(huì)太差,但最好也學(xué)一些其他的東西作以輔助。
下面是我在 ZhaoPin.com 上搜索的結(jié)果:
職位:
高級(jí)Javascript程序員。
要求:
精通HTML DOM對(duì)象的Javascript編程
精通對(duì)象化Javascrip編程
有過編寫Javascript 控件的經(jīng)驗(yàn)
熟悉Java編程
熟悉Server Side Javascript者優(yōu)先
還有很多這樣的工作,但他們一般要求的不僅僅是會(huì) JavaScript ,一般都要求會(huì)些其他的東西,哪個(gè)公司不想要個(gè)全才呀,呵呵。
但在實(shí)際工作中,一般都是分工協(xié)作的,你干這個(gè),他做那個(gè)的。
其實(shí)很多單位相求你既會(huì)這,又得會(huì)那,那樣的多是國企、或是中國的企業(yè),外企,還有中國的很多私企、個(gè)企,就沒有那么多的要求,甚至是工作經(jīng)驗(yàn)也不需要,他們重視的是個(gè)人能力。
JavaScript 可是好東西呀,暑假回來我也要向 JavaScript 進(jìn)軍了。呵呵。
說起JS的異步執(zhí)行機(jī)制,如果百度一下,你首先會(huì)發(fā)現(xiàn)阮一峰的寫過一篇關(guān)于異步機(jī)制的文章( ),等你津津有味又一頭霧水的看完,然后繼續(xù)看百度的其他結(jié)果,然后會(huì)發(fā)現(xiàn),阮一峰的這篇被另一個(gè)大牛樸靈給批判了
( )。
由此可見,關(guān)于異步執(zhí)行機(jī)制到底是怎么回事,因?yàn)樯婕暗綖g覽器底層機(jī)制,所以不容易徹底了解清楚,就算是大牛阮一峰,也只是通過英文文獻(xiàn)來了解,而且一知半解。我的這篇文章只是試圖盡可能簡單的描述一下JS的異步執(zhí)行機(jī)制,坦白說,我現(xiàn)在并不能完全弄懂這個(gè)機(jī)制,所以也不能完全解釋清這個(gè)機(jī)制,所以,如果我寫的越嚴(yán)謹(jǐn),就越容易出錯(cuò),我只能簡單但是較模糊的描述一下:
JS的運(yùn)行環(huán)境是一個(gè)很復(fù)雜的環(huán)境,它里面有非常多的復(fù)雜的名詞事物,用簡單又不嚴(yán)謹(jǐn)?shù)恼f法來說,運(yùn)行環(huán)境里至少有下面這些事物:
有一個(gè)國外的web app,專門用來講解異步事件的門道 Loupe ,這個(gè)更接近真實(shí)情況。為什么我不講解這個(gè)?因?yàn)楦鼜?fù)雜了,我們并不打算研究瀏覽器的底層,不是么?
然后說一下任務(wù)隊(duì)列里的任務(wù)。所有任務(wù)可以分成兩種,一種是同步任務(wù)(synchronous),另一種是異步任務(wù)(asynchronous)。同步任務(wù)指的是,靠主線程自己就可以執(zhí)行完成的任務(wù);異步任務(wù)指的是,主線程執(zhí)行開始之后,需要靠主線程之外的線程才能完成的任務(wù)。由主線程決定是否要?jiǎng)佑闷渌€程。以下內(nèi)容,不再提棧,只說主線程。
現(xiàn)在說重點(diǎn):
異步任務(wù)的執(zhí)行機(jī)制是:
當(dāng)主線程遇到一個(gè)異步任務(wù),比如一個(gè)ajax請(qǐng)求,當(dāng)主線程執(zhí)行到 xhr.send() 的時(shí)候,這個(gè)send命令是立即執(zhí)行的, 并不會(huì)像一些人想象的,拖到所有同步任務(wù)的最后面。 然后主線程向http線程發(fā)送指令,要求http線程向服務(wù)器發(fā)送請(qǐng)求。這里強(qiáng)調(diào)一下http線程,顯然它不是主線程的一部分,因?yàn)樗梢圆l(fā),如果你有100個(gè)ajax請(qǐng)求,每個(gè)都需要1秒鐘,是不是http線程要花100秒呢?并不是,它會(huì)并發(fā)100個(gè)請(qǐng)求,總共耗時(shí)大約1.01秒就完成了。
主線程向以http線程為代表的幾個(gè)線程發(fā)送指令之后,主線程就暫時(shí)不再管這個(gè)ajax任務(wù)了,而是去看任務(wù)隊(duì)列里的下一個(gè)任務(wù)。
http線程發(fā)送了請(qǐng)求之后接收反饋,收到之后,形成一個(gè)新的事件(可以叫做“我收到啦!”事件),然后插入到回調(diào)函數(shù)隊(duì)列中,因?yàn)榛卣{(diào)函數(shù)隊(duì)列的優(yōu)先級(jí)很低,所以會(huì)排到總隊(duì)列的最后面,其結(jié)果就是:主線程把同步任務(wù)都完成了,才開始執(zhí)行異步事件的 回調(diào) 。 注意,并不是異步任務(wù)在全體同步任務(wù)結(jié)束之后才開始,而是異步任務(wù)的回調(diào)通常在全體同步任務(wù)結(jié)束之后才開始!異步任務(wù)跟異步任務(wù)的回調(diào)是兩回事!是兩個(gè)任務(wù)!一個(gè)鮮明的例子就是 setTimeout(fn, 1000) ,計(jì)時(shí)是從主線程遇到 setTimeout() 任務(wù),然后分配給計(jì)時(shí)器線程,計(jì)時(shí)器線程開始干活的時(shí)候就開始計(jì)時(shí)了!只不過要1秒之后 fn 才執(zhí)行! setTimeout() 和 fn 是兩個(gè)任務(wù)! setTimeout() 是立即執(zhí)行, fn 才是1秒之后執(zhí)行。但是 setTimeout() 的執(zhí)行,人眼是感受不到的,因?yàn)椴]有什么地方有一個(gè)秒表告訴你 setTimeout() 開始執(zhí)行了;而fn的執(zhí)行,人眼能感受到,所以人們會(huì)錯(cuò)誤的以為fn才是異步任務(wù),其實(shí)fn并不是, fn 是個(gè)回調(diào)任務(wù),往往 fn 是同步任務(wù),比如 fn 可能是 console.log(123) ,這怎么會(huì)是異步任務(wù)。
所以,異步機(jī)制是瀏覽器的兩個(gè)或以上常駐線程共同完成的,異步請(qǐng)求是JS主線程和其他某個(gè)線程共同完成的,JS的執(zhí)行線程發(fā)起異步請(qǐng)求(這時(shí)瀏覽器會(huì)開一條新的HTTP請(qǐng)求線程來執(zhí)行請(qǐng)求,這時(shí)JS自己的任務(wù)已完成,繼續(xù)執(zhí)行線程隊(duì)列中剩下的其他任務(wù)),然后在未來的某一時(shí)刻"任務(wù)隊(duì)列"線程監(jiān)視到之前的發(fā)起的HTTP請(qǐng)求已完成, "任務(wù)隊(duì)列"就會(huì)把完成事件插入到JS執(zhí)行隊(duì)列的尾部等待JS處理 。
最后專門說說定時(shí)觸發(fā)(settimeout和setinterval)。
定時(shí)觸發(fā)是由瀏覽器的定時(shí)器線程執(zhí)行的定時(shí)計(jì)數(shù), 然后在定時(shí)時(shí)間到達(dá)之后,定時(shí)器線程把定時(shí)處理函數(shù)的執(zhí)行請(qǐng)求插入到JS回調(diào)隊(duì)列的尾端。
這個(gè)1到底是100毫秒之后彈出,還是1000毫秒(或更多時(shí)間)后彈出呢?又或是1100毫秒之后彈出?
答案是,1000毫秒多一點(diǎn)點(diǎn)之后彈出。
原因:瀏覽器會(huì)先執(zhí)行setTimeout,也就是開始計(jì)時(shí),然后開始執(zhí)行sometask,執(zhí)行了1000毫秒,然后去回調(diào)隊(duì)列里看回調(diào)任務(wù),alert(1);早就恭候了,因?yàn)槎〞r(shí)100毫秒之后alert(1)就可以執(zhí)行了。所以,等1000毫秒的任務(wù)完成,1就會(huì)立即彈出,所以答案是1000毫秒多一點(diǎn)點(diǎn)之后彈出。
所以用這兩個(gè)函數(shù)的時(shí)候,實(shí)際的執(zhí)行時(shí)間是大于或等于指定時(shí)間的,不保證能準(zhǔn)確定時(shí)的。
最后強(qiáng)調(diào)一下setInterval。比如我希望每100毫秒打印一個(gè)1。然后,又有極端情況,就是sometask耗時(shí)1000毫秒。你以為sometask結(jié)束之后會(huì)打出10個(gè)1么?并不會(huì),只會(huì)打出1個(gè)1,因?yàn)閟etInterval第一次讀秒結(jié)束之后,回調(diào)隊(duì)列出現(xiàn)了一個(gè)alert(1),根據(jù)之前的理論,并不會(huì)執(zhí)行。又過了100毫秒之后,計(jì)時(shí)器線程會(huì)去觀察回調(diào)隊(duì)列是不是已經(jīng)有了alert(1),如果有,就不再往回調(diào)隊(duì)列里加alert(1),目的就是為了避免回調(diào)疊加執(zhí)行。
總之,你需要記住,異步任務(wù)就是主線程在任務(wù)隊(duì)列里看到了這個(gè)任務(wù),看了一眼之后就然后安排別的線程幫忙,然后主線程就忙別的去了,別的線程幫忙完事之后,再在隊(duì)列末尾放一個(gè)新任務(wù)叫“幫忙完畢”,到此異步任務(wù)本身就完事。主任務(wù)看到“幫忙完畢”任務(wù)之后,就去執(zhí)行回調(diào),回調(diào)執(zhí)行完,這個(gè)異步任務(wù)連同回調(diào)就全都完事。然后,如果并沒有回調(diào)。。。沒有就沒有唄。
分享文章:javascript感受,javascript心得體會(huì)
文章出自:http://vcdvsql.cn/article30/dsigcpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、網(wǎng)站排名、網(wǎng)站收錄、品牌網(wǎng)站設(shè)計(jì)、軟件開發(fā)、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)