大家好,我是IT修真院深圳分院第4期學(xué)員梁耀杠氢,一枚正直純潔善良的web程序員站刑。
今天給大家分享:
【JS-01】函數(shù)表達(dá)式和函數(shù)聲明有什么區(qū)別?
Web小課堂
分享人:梁耀
1.背景介紹
即異步的 JavaScript 和 XML修然,是一種用于創(chuàng)建快速動(dòng)態(tài)網(wǎng)頁(yè)的技術(shù)笛钝;
傳統(tǒng)的網(wǎng)頁(yè)(不使用 AJAX)如果需要更新內(nèi)容,必需重載整個(gè)網(wǎng)頁(yè)面愕宋。
使用AJAX則不需要加載更新整個(gè)網(wǎng)頁(yè),實(shí)現(xiàn)部分內(nèi)容更新结榄;
這里先說(shuō)說(shuō)什么是同步異步中贝,
我們知道JS是單線程的,只有在一個(gè)任務(wù)處理完成的時(shí)候才會(huì)執(zhí)行下一個(gè)任務(wù)臼朗;任務(wù)隊(duì)列
單線程影響效率邻寿,所以把任務(wù)分成同步任務(wù)和異步任務(wù)蝎土,同步任務(wù)即主線程上排隊(duì)執(zhí)行的任務(wù);
異步任務(wù)是不進(jìn)入主線程進(jìn)入任務(wù)隊(duì)列的任務(wù)绣否,只有"任務(wù)隊(duì)列"通知主線程誊涯,某個(gè)異步任務(wù)可以執(zhí)行了,該任務(wù)才會(huì)進(jìn)入主線程執(zhí)行
2.知識(shí)剖析
具體來(lái)說(shuō)蒜撮,AJAX包括以下幾個(gè)步驟暴构。
1.創(chuàng)建AJAX對(duì)象
2.發(fā)出HTTP請(qǐng)求
3.接收服務(wù)器傳回的數(shù)據(jù)
4.更新網(wǎng)頁(yè)數(shù)據(jù)
JAX-創(chuàng)建XMLHttpRequest對(duì)象
XMLHttpRequest 用于在后臺(tái)與服務(wù)器交換數(shù)據(jù)。
為了應(yīng)對(duì)所有的現(xiàn)代瀏覽器,包括 IE5 和 IE6,請(qǐng)檢查瀏覽器是否支持 XMLHttpRequest 對(duì)象互亮。如果支持圈匆,則創(chuàng)建 XMLHttpRequest 對(duì)象。如果不支持储狭,則創(chuàng)建 ActiveXObject
這里值得注意的是,AJAX只能向同源網(wǎng)址(協(xié)議、域名晴埂、端口都相同)發(fā)出HTTP請(qǐng)求,
如果要跨域?qū)?huì)報(bào)錯(cuò)寻定。
AJAX-向服務(wù)器發(fā)送請(qǐng)求
如需將請(qǐng)求發(fā)送到服務(wù)器邑时,我們使用 XMLHttpRequest 對(duì)象的 open() 和 send() 方法:
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
3.常見(jiàn)問(wèn)題
1. 緩存問(wèn)題
在IE瀏覽器下面使用get請(qǐng)求時(shí),如果第一次請(qǐng)求了數(shù)據(jù)之后IE會(huì)自動(dòng)緩存數(shù)據(jù)特姐,如果下一次再發(fā)送同樣的 請(qǐng)求的時(shí)候?yàn)g覽器會(huì)自動(dòng)先去找緩存顯示出來(lái)晶丘,所以如果請(qǐng)求的數(shù)據(jù)有變化的時(shí)候,這里是看不到變化的唐含。
xhr.open("get","xxxx.aspx?_dc="+new Date().getTime(),true);
就是在請(qǐng)求的后面 加上時(shí)間戳或是隨機(jī)數(shù)浅浮,讓url變成唯一,或者是捷枯,改成post請(qǐng)求滚秩。
2.Ajax亂碼問(wèn)題
亂碼問(wèn)題雖然我們目前遇到的不多,但是也屬于比較常見(jiàn)的一個(gè)問(wèn)題了淮捆。出現(xiàn)的主要原因就是編碼不一致導(dǎo)致的郁油。
如果出現(xiàn)亂碼問(wèn)題了,首先檢查一下meta聲明的charset要和請(qǐng)求的頁(yè)面返回的charset一致攀痊。response.charset="gb2312 or utf-8"
3.Ajax狀態(tài)0的問(wèn)題
有時(shí)候在測(cè)試Ajax代碼的時(shí)候加了 xhr.status==200的判斷后桐腌,一直不執(zhí)行xhr.status==200的代碼,
這個(gè)就需要注意了苟径。xhr.status==200是要通過(guò)服務(wù)器確認(rèn)后來(lái)返回的案站,在服務(wù)器頁(yè)面沒(méi)有發(fā)生錯(cuò)誤或者轉(zhuǎn)向時(shí)才返回200狀態(tài)的,
此狀態(tài)和你通過(guò)瀏覽器訪問(wèn)頁(yè)面時(shí)服務(wù)器定義的狀態(tài)一致棘街。直接拖進(jìn)瀏覽器瀏覽結(jié)果或者雙擊運(yùn)行html頁(yè)面的蟆盐,未發(fā)生錯(cuò)誤時(shí)承边,此時(shí)的xhr.status是0,不是200
4.拓展思考
ajax的優(yōu)點(diǎn):
最大的一點(diǎn)是頁(yè)面無(wú)刷新石挂,用戶的體驗(yàn)非常好博助。
使用異步方式與服務(wù)器通信,具有更加迅速的響應(yīng)能力痹愚。
可以把以前一些服務(wù)器負(fù)擔(dān)的工作轉(zhuǎn)嫁到客戶端富岳,利用客戶端閑置的能力來(lái)處理, 減輕服務(wù)器和帶寬的負(fù)擔(dān)里伯,節(jié)約空間和寬帶租用成本城瞎。并且減輕服務(wù)器的負(fù)擔(dān), ajax的原則是“按需取數(shù)據(jù)”疾瓮,可以最大程度的減少冗余請(qǐng)求脖镀,和響應(yīng)對(duì)服務(wù)器造成的負(fù)擔(dān)。
基于標(biāo)準(zhǔn)化的并被廣泛支持的技術(shù)狼电,不需要下載插件或者小程序蜒灰。
ajax可使因特網(wǎng)應(yīng)用程序更小、更快肩碟,更友好
ajax的缺點(diǎn):
ajax不支持瀏覽器back按鈕强窖。
安全問(wèn)題 AJAX暴露了與服務(wù)器交互的細(xì)節(jié)。
對(duì)搜索引擎的支持比較弱削祈。
破壞了程序的異常機(jī)制翅溺。
不容易調(diào)試。
post請(qǐng)求與get請(qǐng)求
GET - 從指定的資源請(qǐng)求數(shù)據(jù)髓抑。
POST - 向指定的資源提交要被處理的數(shù)據(jù)
GET 請(qǐng)求可被緩存
GET 請(qǐng)求保留在瀏覽器歷史記錄中
GET 請(qǐng)求可被收藏為書(shū)簽
GET 請(qǐng)求不應(yīng)在處理敏感數(shù)據(jù)時(shí)使用
GET 請(qǐng)求有長(zhǎng)度限制
GET 請(qǐng)求只應(yīng)當(dāng)用于取回?cái)?shù)據(jù)
POST 請(qǐng)求不會(huì)被緩存
POST 請(qǐng)求不會(huì)保留在瀏覽器歷史記錄中
POST 不能被收藏為書(shū)簽
POST 請(qǐng)求對(duì)數(shù)據(jù)長(zhǎng)度沒(méi)有要求
參考文獻(xiàn)
參考一:《JavaScript高級(jí)編程設(shè)計(jì)》
參考二:AJAX -- JavaScript 標(biāo)準(zhǔn)參考教程(alpha)——阮一峰
更多討論
AJAX適用場(chǎng)景有哪些咙崎?
表單驅(qū)動(dòng)的交互
深層次的樹(shù)的導(dǎo)航
快速的用戶與用戶間的交流響應(yīng)
類(lèi)似投票、yes/no等無(wú)關(guān)痛癢的場(chǎng)景
對(duì)數(shù)據(jù)進(jìn)行過(guò)濾和操縱相關(guān)數(shù)據(jù)的場(chǎng)景
普通的文本輸入提示和自動(dòng)完成的場(chǎng)景
1:post一般是是通過(guò)json數(shù)據(jù)的形式(可以是對(duì)象或者字符串)
2.一般有四種方式:https://www.cnblogs.com/summers/p/3225375.html
3.get與post的區(qū)別主要在于
GET - 從指定的資源請(qǐng)求數(shù)據(jù)吨拍。
POST - 向指定的資源提交要被處理的數(shù)據(jù)
4.局部更新褪猛,不需要重新加載整個(gè)頁(yè)面,提高用戶體驗(yàn)度
5.表單驅(qū)動(dòng)的交互
深層次的樹(shù)的導(dǎo)航
快速的用戶與用戶間的交流響應(yīng)
類(lèi)似投票羹饰、yes/no等無(wú)關(guān)痛癢的場(chǎng)景
對(duì)數(shù)據(jù)進(jìn)行過(guò)濾和操縱相關(guān)數(shù)據(jù)的場(chǎng)景
普通的文本輸入提示和自動(dòng)完成的場(chǎng)景
今天的分享就到這里啦伊滋,歡迎大家點(diǎn)贊、轉(zhuǎn)發(fā)队秩、留言笑旺、拍磚~
------------------------------------------------------------------------------------------------------------------------
技能樹(shù).IT修真院
“我們相信人人都可以成為一個(gè)工程師,現(xiàn)在開(kāi)始刹碾,找個(gè)師兄燥撞,帶你入門(mén),掌控自己學(xué)習(xí)的節(jié)奏迷帜,學(xué)習(xí)的路上不再迷梦锸妫”。
這里是技能樹(shù).IT修真院戏锹,成千上萬(wàn)的師兄在這里找到了自己的學(xué)習(xí)路線冠胯,學(xué)習(xí)透明化,成長(zhǎng)可見(jiàn)化锦针,師兄1對(duì)1免費(fèi)指導(dǎo)荠察。快來(lái)與我一起學(xué)習(xí)吧?奈搜!