JavaScript本來就很簡(jiǎn)單(運(yùn)行機(jī)制)

JavaScript同步與異步

在JavaScript中同步與異步是非常重要的兩個(gè)概念输虱,首先在這兒做一個(gè)總體概述,然后再詳細(xì)說明
同步:往簡(jiǎn)單了說窗怒,就是在同一時(shí)間JavaScript只能做一件事
異步:同樣的異步就是JavaScript可以在同一時(shí)間做兩件以上的事写半,在做這件事的同時(shí),還可以做另一件事

  • 首先必須說明一點(diǎn)埃难,JavaScript的在設(shè)計(jì)之初就注定了他必須是同步的,(也就是單線程的)涤久,而不能是異步的涡尘,為啥不能是異步的呢?大家想一個(gè)問題响迂,你寫了個(gè)JavaScript文件考抄,代碼里面操作了一個(gè)DOM元素(比如:修改它的背景顏色),接下來你又想刪除了這個(gè)DOM元素蔗彤,假入JavaScript是異步的川梅,也就是說在同一時(shí)間可以同時(shí)執(zhí)行這兩件事,那么到底是修改呢然遏,還是刪除呢贫途?不知道?所以JavaScript必須是同步的

  • 同步有什么好處呢 待侵?代碼執(zhí)行較為清晰丢早,邏輯比較簡(jiǎn)單,但是因?yàn)槭峭降难砬悖a必須從上往下一行一行的執(zhí)行香拉,執(zhí)行到某一行,假如遇到了一個(gè)ajax請(qǐng)求中狂,這個(gè)請(qǐng)求時(shí)間比較長(zhǎng),在這段時(shí)間里后面的代碼又執(zhí)行不了扑毡,cpu也處于空閑狀態(tài)胃榕,勢(shì)必造成了資源的浪費(fèi)

  • 異步的好處? 遇到異步請(qǐng)求,可以繼續(xù)往下執(zhí)行勋又,不需要等待苦掘,有效的利用了資源,節(jié)省了時(shí)間


JavaScript的代碼執(zhí)行機(jī)制

var a = 1;
var b = 3;
var c = a + b;
var d = setTimeOut(function(){
    alert(111)楔壤;
}鹤啡,3000)
console.log(c);

JavaScript代碼從上往下一行一行去執(zhí)行,以上代碼為例說明:

首先執(zhí)行第一行代碼蹲嚣,OK第一行代碼進(jìn)入執(zhí)行隊(duì)列去執(zhí)行递瑰,(在內(nèi)存里開辟一塊空間命名為a保存一個(gè)數(shù)值為1),執(zhí)行完畢后隙畜,第一行代碼出隊(duì)列

第二行代碼進(jìn)去執(zhí)行隊(duì)列去執(zhí)行抖部,(在內(nèi)存里開辟一塊空間命名為b保存一個(gè)數(shù)值為3),執(zhí)行完畢后议惰,第二行代碼出隊(duì)列

第三行代碼依次去執(zhí)行慎颗,只不過第三行代碼會(huì)從內(nèi)存里加載a , b變量的值言询,然后做加法運(yùn)算俯萎,執(zhí)行完了之后,第三行代碼出隊(duì)列

第四行依次走运杭,進(jìn)入隊(duì)列夫啊,執(zhí)行隊(duì)列一看是時(shí)間函數(shù),瞬間將時(shí)間函數(shù)扔進(jìn)異步隊(duì)列里面县习,異步隊(duì)列會(huì)檢測(cè)時(shí)間函數(shù)的時(shí)間涮母,3秒之后會(huì)將時(shí)間函數(shù)的回掉函數(shù)扔進(jìn)可執(zhí)行隊(duì)列(可執(zhí)行隊(duì)列里面有一個(gè)事件循環(huán)機(jī)制,在主隊(duì)列為空的情況下躁愿,會(huì)將可執(zhí)行隊(duì)列的代碼加載到執(zhí)行隊(duì)列里去執(zhí)行)

最后一行進(jìn)入執(zhí)行隊(duì)列去執(zhí)行叛本,執(zhí)行完畢出隊(duì)列

最后的執(zhí)行結(jié)果肯定是先控制臺(tái)輸出4,然后再?gòu)棾?11

  • 這就是JavaScript的同步單線程機(jī)制彤钟,在同一時(shí)刻執(zhí)行隊(duì)列中只能執(zhí)行一條命令也就是只能做一件事来候,執(zhí)行完了,出隊(duì)列逸雹,后面的命令才能進(jìn)入執(zhí)行隊(duì)列
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末营搅,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子梆砸,更是在濱河造成了極大的恐慌转质,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帖世,死亡現(xiàn)場(chǎng)離奇詭異休蟹,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門赂弓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绑榴,“玉大人,你說我怎么就攤上這事盈魁∠柙酰” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵杨耙,是天一觀的道長(zhǎng)赤套。 經(jīng)常有香客問我,道長(zhǎng)按脚,這世上最難降的妖魔是什么于毙? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮辅搬,結(jié)果婚禮上唯沮,老公的妹妹穿的比我還像新娘。我一直安慰自己堪遂,他們只是感情好介蛉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著溶褪,像睡著了一般币旧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上猿妈,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天吹菱,我揣著相機(jī)與錄音,去河邊找鬼彭则。 笑死鳍刷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的俯抖。 我是一名探鬼主播输瓜,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼芬萍!你這毒婦竟也來了尤揣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤柬祠,失蹤者是張志新(化名)和其女友劉穎北戏,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體漫蛔,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嗜愈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年示罗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芝硬。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖轧房,靈堂內(nèi)的尸體忽然破棺而出拌阴,到底是詐尸還是另有隱情,我是刑警寧澤奶镶,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布迟赃,位于F島的核電站,受9級(jí)特大地震影響厂镇,放射性物質(zhì)發(fā)生泄漏纤壁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一捺信、第九天 我趴在偏房一處隱蔽的房頂上張望酌媒。 院中可真熱鬧,春花似錦迄靠、人聲如沸秒咨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雨席。三九已至,卻和暖如春吠式,著一層夾襖步出監(jiān)牢的瞬間陡厘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工特占, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留糙置,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓摩钙,卻偏偏與公主長(zhǎng)得像罢低,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子胖笛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,754評(píng)論 25 707
  • 異步編程對(duì)JavaScript語言太重要网持。Javascript語言的執(zhí)行環(huán)境是“單線程”的,如果沒有異步編程长踊,根本...
    呼呼哥閱讀 7,301評(píng)論 5 22
  • 之前對(duì)JS運(yùn)行機(jī)制不太明白,直到讀了阮一峰文章后,突然腦洞大開.當(dāng)然中間也遇到了一點(diǎn)理解上的問題,我只做了一點(diǎn)稍微...
    碼太農(nóng)閱讀 627評(píng)論 0 1
  • 最近有點(diǎn)彷徨功舀,好像我什么時(shí)候不彷徨似的,畢業(yè)以后就感覺在被時(shí)間的車輪推著走身弊,明明什么都不是那么樂意辟汰,但總假笑著告訴...
    戰(zhàn)果果巴拉拉閱讀 420評(píng)論 2 1