<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          譯文:每個(gè)開(kāi)發(fā)人員都應(yīng)該知道的31個(gè)js概念

          共 3303字,需瀏覽 7分鐘

           ·

          2022-04-30 01:52


          前端獵手
          ?鏈接每一位開(kāi)發(fā)者,讓編程更有趣兒!
          關(guān)注

          我是法醫(yī),一只治療系前端碼猿??,與代碼對(duì)話(huà),傾聽(tīng)它們心底的呼聲,期待著大家的點(diǎn)贊??與關(guān)注?,當(dāng)然也歡迎加入前端獵手技術(shù)交流群??,文末掃碼我拉你進(jìn)群,一起交流技術(shù)以及代碼之外的一切???♀?

          轉(zhuǎn)載自Duing(ID:duyi-duing


          原文鏈接:https://dev.to/eludadev/33-javascript-concepts-every-beginner-should-know-with-tutorials-4kao

          者:Eluda

          如有翻譯不準(zhǔn),請(qǐng)多指正


          關(guān)于js你真正了解多少呢?你可能知道如何去寫(xiě)函數(shù),理解簡(jiǎn)單的算法,甚至可能會(huì)編寫(xiě)類(lèi)。但是你知道什么是類(lèi)型化數(shù)組嗎?


          你不需要立刻知道這些概念的全部,但是,你最終會(huì)在你今后的事業(yè)中需要到它們。這就是我為什么建議將這些寫(xiě)成一個(gè)列表,因?yàn)橛泻艽罂赡埽銜?huì)遇到它們其中的一個(gè)主題,并且會(huì)想要一個(gè)教程為了完全的理解它們。


          1:調(diào)用棧

          調(diào)用棧是解釋器(像web瀏覽器中js解釋器),是用來(lái)保持對(duì)它在調(diào)動(dòng)各個(gè)函數(shù)腳本位置的跟蹤——當(dāng)前正在運(yùn)行的函數(shù)是什么以及這些函數(shù)中調(diào)動(dòng)了什么函數(shù),等等。


          2:原始類(lèi)型

          除了對(duì)象外,所有的類(lèi)型都定義了不可更改的變值(即不可更改的值)。例如(與C不同的),字符串就是不可變的。我們將這些類(lèi)型的變值成為“原始值”。


          3:值類(lèi)型以及引用類(lèi)型



          分配了非本原始值的變量會(huì)被該值所引用。該引用指向?qū)ο笤趦?nèi)存當(dāng)中的位置。實(shí)際上,這些變量不包含這個(gè)值。


          4:隱式,顯式,標(biāo)稱(chēng),結(jié)構(gòu)化以及鴨子類(lèi)型


          類(lèi)型強(qiáng)制意味著當(dāng)運(yùn)算符的操作數(shù)是不同的類(lèi)型時(shí),它們其中的一個(gè)就會(huì)被轉(zhuǎn)換成另一個(gè)操作數(shù)類(lèi)型的“等價(jià)值”。


          5:==與===與typeof



          JavaScript有兩種視覺(jué)上相似但又非常不同的方法來(lái)測(cè)試相等性。你可以用==或者===來(lái)測(cè)試。


          6:函數(shù)作用域,塊作用域和詞法作用域

          區(qū)分差別是非常重要的,因?yàn)楸磉_(dá)式(expressions)可以像語(yǔ)句一樣工作,這就是為什么也有Expression這樣的語(yǔ)句。但是,另一方面,語(yǔ)句也不能像表達(dá)式一樣工作。


          7:IIFE,模塊和名稱(chēng)空間

          一種常用的函數(shù)編碼模式有一個(gè)奇特的名字:立即調(diào)用函數(shù)表達(dá)式。或者更加準(zhǔn)確的來(lái)說(shuō)被稱(chēng)為IIFE,發(fā)音為“iffy”。


          8:消息隊(duì)列和事件循環(huán)

          “JavaScript是如何異步和單線(xiàn)程的”?答案是js語(yǔ)言是單線(xiàn)程,異步行為不是js語(yǔ)言本身的一部分,而是它們建立在瀏覽器(或者編程環(huán)境)中的js語(yǔ)言之上,并通過(guò)瀏覽器API訪(fǎng)問(wèn)。


          9:setTimeout,setInterval和requestAnimationFrame



          我們可以決定不去馬上執(zhí)行一個(gè)函數(shù),而是在一個(gè)確切的時(shí)間之后。這被稱(chēng)作為“預(yù)約電話(huà)”。


          10:JavaScript引擎



          為web編寫(xiě)代碼有時(shí)會(huì)感覺(jué)有點(diǎn)神奇,因?yàn)殚_(kāi)發(fā)人員編寫(xiě)了一系列的字符,這些字符轉(zhuǎn)化成了瀏覽器中具體的圖像,文字和動(dòng)作。理解這項(xiàng)技術(shù)能夠幫助開(kāi)發(fā)者更好的調(diào)整作為程序員的技能。


          11:位操作符,類(lèi)型數(shù)組和數(shù)組緩沖區(qū)


          好的,從技術(shù)上來(lái)說(shuō),對(duì)于計(jì)算機(jī)來(lái)講所有的東西都會(huì)歸結(jié)為1和0。它不使用數(shù)字、字符或者字符串來(lái)操作,它只用二進(jìn)制數(shù)字(bits)。這個(gè)簡(jiǎn)單解釋的版本是所有的東西都會(huì)以二進(jìn)制的方式儲(chǔ)存。然后計(jì)算機(jī)使用像UTF-8之類(lèi)的編碼將之前保存的位組合映射到字符,數(shù)字或者不同的符號(hào)(ELI5版本)。


          12:DOM和LayoutTrees(布局樹(shù)圖)



          文檔對(duì)象模型,通常被成為“DOM,”它是使網(wǎng)站具有互動(dòng)性的一個(gè)重要組成部分。它是一種允許編程語(yǔ)言去操縱內(nèi)容,結(jié)構(gòu)和網(wǎng)站風(fēng)格的界面。JavaScript是連接網(wǎng)絡(luò)瀏覽器中的DOM客戶(hù)端腳本語(yǔ)言。


          13:工廠(chǎng)和類(lèi)



          JavaScript是一種基于原型的語(yǔ)言,意味著對(duì)象的屬性和方法能夠被分享通過(guò)克隆和擴(kuò)展能力。這被稱(chēng)為原型繼承并且它與類(lèi)繼承不同。


          14:this、調(diào)用、應(yīng)用 和綁定



          這些函數(shù)對(duì)于每一個(gè)JavaScript開(kāi)發(fā)者來(lái)說(shuō)都是非常重要的并且它們幾乎被使用在每一個(gè)JavaScript庫(kù)和框架上。


          15:操作符,構(gòu)造函數(shù),instanceof和instances



          每一個(gè)JavaScript對(duì)象都有一個(gè)原型。在JavaScript中所以的對(duì)象都會(huì)從他們的原型中繼承它們的方法和屬性。


          16:原型繼承和原型鏈

          對(duì)于在類(lèi)基礎(chǔ)語(yǔ)言(像Java或者C+)上有經(jīng)驗(yàn)的開(kāi)發(fā)者來(lái)說(shuō),JavaScript是有些令人困惑的,因?yàn)樗麄兪莿?dòng)態(tài)的并且本質(zhì)上不能提供類(lèi)執(zhí)行(calss關(guān)鍵字被引入在ES2015,但它是語(yǔ)法糖,JavaScript仍是原型基礎(chǔ))。


          17:Object.create和Object.assign



          Object.crea方法是JavaScript中創(chuàng)造新的對(duì)象的方法之一。


          18:映射,reduce,filter



          即使你不知道什么是函數(shù)式編程,你可能也在一直使用map,filter和reduce,因?yàn)樗鼈兪欠浅5暮糜貌⑶夷軌蚴鼓愕木幋a更加的整潔,看起來(lái)不是那么糟糕。


          19:純函數(shù),副作用,狀態(tài)突變和事件傳播



          很多的bug都與IO有關(guān),數(shù)據(jù)突變以及副作用軸承代碼。從一些事情例如接收新用戶(hù),通過(guò)http調(diào)用意料之外的響應(yīng),或者編寫(xiě)文件系統(tǒng),這些都在我們的代碼數(shù)據(jù)庫(kù)中蔓延。不幸的是,這是一個(gè)我們逐漸接受習(xí)慣去應(yīng)對(duì)的殘酷的現(xiàn)實(shí)。


          20:閉包



          閉包是將函數(shù)與周?chē)鸂顟B(tài)(詞法環(huán)境)捆綁在一起(封閉)的組合。換句話(huà)說(shuō),閉包允許你從內(nèi)部函數(shù)訪(fǎng)問(wèn)外部函數(shù)的作用域。在JavaScript中,每次創(chuàng)建函數(shù)時(shí)都會(huì)在創(chuàng)建函數(shù)時(shí)創(chuàng)建閉包。


          21:高階函數(shù)



          JavaScript能夠接受高階函數(shù)。這個(gè)處理高階函數(shù)的能力,在其他字符當(dāng)中,能夠使JavaScript任意一種編程語(yǔ)言更加符合函數(shù)編程。


          22:集合和生成器



          Generator對(duì)象是有生成器函數(shù)返回并且也符合可迭代協(xié)議和迭代器協(xié)議。


          23:Promises

          Promise對(duì)象代表異步運(yùn)作最終的完成(或失敗)以及它的結(jié)果值。


          24:async/await



          有一種特殊的語(yǔ)法能夠以一種更加舒適的方式處理primise,這種方式被稱(chēng)為“async/await”.同時(shí),它也非常容易被理解和使用。


          25:數(shù)據(jù)結(jié)構(gòu)

          JavaScript每天都在發(fā)展。隨著框架和平臺(tái)的快速增長(zhǎng),像React,Angular,Vue,NodeJS,Electron,React Native,在大規(guī)模的應(yīng)用中使用JavaScript已經(jīng)非常普遍了。


          26:ExpensiveOperation 和BigO Notation



          “什么是BigONotation?”對(duì)于開(kāi)發(fā)者來(lái)說(shuō)這是一個(gè)很常見(jiàn)的面試工作問(wèn)題,簡(jiǎn)而言之,,它是算法運(yùn)行時(shí)間的數(shù)學(xué)表達(dá)式,它取決于輸入時(shí)間的長(zhǎng)短,通常用來(lái)討論最壞的情況。


          27:算法



          在數(shù)學(xué)和計(jì)算機(jī)科學(xué)中,算法是定義明確的有限序列,通常來(lái)講,是用于解決一類(lèi)特定的問(wèn)題或者執(zhí)行計(jì)算。


          28:繼承,多態(tài)性和代碼重要


          類(lèi)繼承是一個(gè)類(lèi)擴(kuò)展到另一個(gè)類(lèi)的方式,所以我們能創(chuàng)建新的函數(shù)是在現(xiàn)存的基礎(chǔ)上。


          29:設(shè)計(jì)模式




          每個(gè)開(kāi)發(fā)者都會(huì)努力去寫(xiě)可維護(hù),可讀的,可重用的代碼。隨著應(yīng)用程序的不斷擴(kuò)大,編碼結(jié)構(gòu)變得越來(lái)越重要。設(shè)計(jì)模式被證實(shí)是解決這一挑戰(zhàn)的關(guān)鍵,同時(shí)也為特定環(huán)境中的普遍問(wèn)題提供組織結(jié)構(gòu)。


          30:偏函數(shù),柯里化,compose函數(shù)和pipe


          函數(shù)構(gòu)造是一個(gè)由多個(gè)簡(jiǎn)單的函數(shù)構(gòu)成更復(fù)雜的函數(shù)的機(jī)制。


          31:代碼整潔



          編寫(xiě)易于理解的并且可維護(hù)的代碼是每一個(gè)開(kāi)發(fā)者走向王者的至關(guān)重要的技能。


          好了今天的分享就到這里了,有什么想看的可以給法醫(yī)留言哦!




          RECOMMEND


          推薦閱讀

          ? ?

          簡(jiǎn)單有效的方法,幫你對(duì)付拖延癥

          堅(jiān)持的最高境界——善護(hù)念

          除了背代碼,我們還能做什么?

          程序員的快樂(lè)到底是什么?

          程序猿終身學(xué)習(xí)有必要嗎?這篇文章就是最好的答案

          2022程序員跳槽不完全指南



          很感謝小伙伴看到最后??,如果您覺(jué)得這篇文章有幫助到您的的話(huà)不妨關(guān)注?+點(diǎn)贊??+收藏??+評(píng)論??,您的支持就是我更新的最大動(dòng)力。

          歡迎加入前端獵手技術(shù)交流群??,文末掃碼加我微信,我拉你進(jìn)群,一起交流技術(shù)以及代碼之外的一切???♀?

          瀏覽 31
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  樱桃香蕉网站在线观看 | 日韩人妻久久 | 2021国产精品 | 青娱乐久久 | 日韩永久免费A片 |