成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

簡單解釋7個主要JavaScript概念

開發(fā) 前端
術(shù)語的目的是將一個特定的想法封裝成一個優(yōu)美而緊湊的詞。 但是,如果您不了解單詞的含義,就會失去意義。

術(shù)語的目的是將一個特定的想法封裝成一個優(yōu)美而緊湊的詞。 但是,如果您不了解單詞的含義,就會失去意義。

[[322387]]

在開發(fā)人員世界中,更高級的主題通常是遙不可及的,并且常常使新開發(fā)者望而卻步。 部分原因是因?yàn)樗麄兒孟裨谧x一本外國小說。 字母和單詞可能看起來很熟悉,但是沒有意義。

而且很難理解所有內(nèi)容,尤其是如果您必須不斷停下第二個單詞來弄清楚句子試圖告訴您的內(nèi)容時。

在本文中,我決定編譯我經(jīng)常發(fā)現(xiàn)自己會為新開發(fā)人員翻譯的前7個概念。 我希望您發(fā)現(xiàn)他們對成為更好的開發(fā)人員有用。

本文的重點(diǎn)是作為思想的參考/摘要,以幫助您盡快著手解決問題。 每個術(shù)語本身都是一個主題,但出于篇幅和易讀性的目的,我將其盡可能地簡化為核心思想。

本書內(nèi)容遠(yuǎn)不止這些,但總的來說,它抓住了每個單詞試圖傳達(dá)的實(shí)質(zhì)。

希望您發(fā)現(xiàn)它們有用。

感謝您的閱讀!

1.不變性

數(shù)據(jù)形狀不變時。

因此,如果您有一個進(jìn)入函數(shù)的對象,則它以完全相同的形式從它中出來。 附加到它的數(shù)據(jù)可以更改,但參數(shù)的數(shù)量,名稱和順序不能更改。

例如,這是一個突變:

 

  1. function changeMe(someObject){  
  2.   someObject.age = 3;  
  3.   return someObject;  
  4. let exampleOne = {"cat""Tibbers" }; 
  5. console.log(changeMe(exampleOne)); 

該函數(shù)更改對象的形狀,這意味著它是可變的。

2.陳述式

無論您按什么順序進(jìn)行操作,基本規(guī)則都可以確保您每次都能獲得相同且正確的結(jié)果。

例如,該數(shù)學(xué)方程式遵循聲明性方法。

(2 x 5) + 8 - 3 = 15

因此,如果您移動順序,您仍將獲得相同的結(jié)果。

- 3 + (2 x 5) + 8 = 158 - 3 + (2 x 5) = 15

在JavaScript編程中,聲明性模式是函數(shù)的順序與最終結(jié)果的構(gòu)造無關(guān)緊要的地方。 您可以按任何順序調(diào)用它們。 順序無關(guān)緊要。

3.遞歸

當(dāng)函數(shù)繼續(xù)調(diào)用自身直到滿足特定條件時。

不,這不是for循環(huán)。 聽起來可能是這樣,但事實(shí)并非如此。

for循環(huán)是JavaScript的條件方法。 遞歸是一個不斷調(diào)用自身的完整函數(shù)。

這意味著遞歸有兩個部分-基于特定條件的調(diào)用和exit子句。 您的退出子句基本上就是在遞歸結(jié)束時發(fā)生的事情。

這是一個簡單的潛在遞歸:

 

  1. function sumProfit(sales){  
  2.   if(//condition for ending){  
  3.     return theFinalObjectOrResult;  
  4.   } else {  
  5.     //do something. Reduce the condition.  
  6.     return sumProfit(reducedCondition);  
  7.   }  

4.回調(diào)

回調(diào)是在另一個函數(shù)執(zhí)行完畢后才執(zhí)行的函數(shù)。

我們?yōu)槭裁葱枰@個? 因?yàn)镴avaScript是事件驅(qū)動的-意味著它不等待響應(yīng)。 當(dāng)事情以自給自足的方式運(yùn)行時,這無關(guān)緊要。

當(dāng)您開始依賴外部響應(yīng)(例如API)時,情況就變得很嚴(yán)重。 延遲是您的JavaScript代碼發(fā)送請求并將其接收回來所花費(fèi)的時間。

在JavaScript看來,它已經(jīng)完成了工作-它已成功執(zhí)行了代碼。

但是,實(shí)際上,您仍在等待回應(yīng)。 有時,您會通過諾言或延遲計(jì)時器迫使代碼冷靜下來,放松一下,等待片刻。 確認(rèn)完成后,您可以調(diào)用callback()函數(shù)。

無論如何,這是回調(diào)的樣子:

 

  1. function waitForMeeeee(someValues, callback){  
  2.   //do something with someValues  
  3.   callback(); } 
  4. waitForMeeeee('The answer is 42'function(){  
  5.   alert('all done now'); } 
  6.              ); 

您還可以抽象出回調(diào),并使其如下所示:

 

  1. function waitForMeeeee(someValues, callback){  
  2.   //do something with someValues  
  3.   callback();  
  4.  
  5. function allDone(){  
  6.   alert('all done now');  
  7.  
  8. waitForMeeeee('The answer is 42', allDone); 

5.異步

想想一條直線。 您的JavaScript代碼從一端執(zhí)行到另一端。 但是有時候,您需要暫停一下,只是在您跑到外部來源搶東西的那一刻。

暫停的時刻是JavaScript的異步部分。

關(guān)鍵字async還返回隱式的Promise。

隱式是什么意思? 默認(rèn)情況下,它返回一個promise。

什么是諾言? 這是告訴您的代碼等待的原因,因?yàn)橥瓿赡承┕ぷ鲿兴舆t。 例如,您在等待外部API用正確的數(shù)據(jù)響應(yīng)。

為什么這很重要? 因?yàn)槟梢詫hen()與異步函數(shù)一起使用。

那么()是什么? 您的回調(diào)相當(dāng)于基于承諾的函數(shù),可讓您在承諾完成執(zhí)行后執(zhí)行操作。

看起來像什么? 這是一個例子:

 

  1. async function doSomething(){  
  2.   //do something there.  
  3.   return 'woot!';} 
  4. doSomething().then(function(result){ console.log(result);}); 

或者,如果您真的想使承諾部分明確:

 

  1. async function doSomething(){  
  2.   //do something there.  
  3.   return Promise.resolve('woot!'); 
  4. doSomething().then(function(result){ console.log(result);}); 

6.代理

將其視為對象的附加擴(kuò)展。 可以針對已存在的事物創(chuàng)建自定義行為。

在某種程度上,它還充當(dāng)原始對象和其他功能之間的中介。

是。 代理可以更改和處理數(shù)據(jù)。

是。 除其他事項(xiàng)外,它通常用作驗(yàn)證檢查器。

它是如何工作的?

代理包含三個部分-處理程序,陷阱(即方法)和目標(biāo)。

有13個可用于代理的陷阱。 您需要對它們進(jìn)行Google搜索,因?yàn)檫@超出了本文的范圍。

這是一個已實(shí)施陷阱的代理示例:

 

  1. let handler = {  
  2.   get: function(theObjectPassed, theObjectName){  
  3.     //some checking logic  
  4.     console.log(theObjectPassed, theObjectName);  
  5.     return 'all done' ; } 
  6.  
  7. let someObject = { a: 1, b: 2}; 
  8. let valueName = new Proxy(someObject, handler); 
  9. console.log(valueName.someObject); 

代理的功能遠(yuǎn)不止于此,但是示例只是一個起點(diǎn)。

7.垃圾收集

一切都占用內(nèi)存。 初始化變量后,將為其分配一點(diǎn)空間。

內(nèi)存僅在調(diào)用時初始化。 因此,當(dāng)一個函數(shù)運(yùn)行并且內(nèi)部有變量時,它的存在只會持續(xù)到該函數(shù)需要它的時間。 它不會停留在周圍。

垃圾收集是清除內(nèi)存的方式。

內(nèi)存泄漏是指由于在全局空間中聲明了變量而沒有進(jìn)行垃圾回收的情況,這會造成污染并占用不必要的空間。

這太多了,您的應(yīng)用程序可能會變慢。

因此,請盡可能保留變量,并使用null取消初始化不需要的內(nèi)容

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2020-05-13 16:54:05

JavaScript開發(fā)代碼

2020-03-17 14:53:31

JavaScript面試問題前端

2010-08-04 09:20:31

JavaScript

2020-03-05 08:58:42

JavaScript語言開發(fā)

2012-02-20 14:20:44

JavaPlay Framew

2020-03-05 21:40:49

Javascript前端

2020-09-17 12:39:04

云計(jì)算云基礎(chǔ)Gartner

2021-07-30 15:43:10

零信任網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊

2013-04-25 09:55:21

進(jìn)程線程

2019-09-18 15:09:50

進(jìn)程線程操作系統(tǒng)

2014-11-11 15:46:54

MapReduce算法

2022-12-26 08:25:16

JavaScriptweb瀏覽器

2010-03-02 14:30:41

WCF宿主模式

2023-11-14 16:57:10

2010-05-24 14:06:31

JavaScript

2011-08-04 13:58:45

JavaScript

2012-02-13 13:44:46

JavaScript

2017-07-12 16:45:10

Docker概念鏡像

2022-10-08 07:36:08

Kubernetes開源容器

2023-05-04 23:54:02

JavaScrip代碼技巧
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产午夜精品一区二区三区嫩草 | 欧美一区免费 | 在线国产中文字幕 | 国产片淫级awww | 黄色一级片aaa | 久久国产区 | 亚洲一区网站 | 欧美aaa级 | 国产精品久久久久久久久 | 欧美精品一区二区三区视频 | com.国产 | 亚洲www | 亚洲精品久久久一区二区三区 | 久久91精品国产 | 精品久久香蕉国产线看观看亚洲 | 亚洲国产一区二区三区 | 中文字幕av在线 | 日韩国产在线 | 亚洲视频中文字幕 | 岛国av一区二区 | 99视频在线免费观看 | 久久成人国产 | 一区二区三区久久久 | 国产福利在线免费观看 | 久热m3u8| 人人干在线视频 | 天天天天天天操 | 久久不卡 | 一区欧美 | 国产最新视频在线 | 一区二区电影 | 五月激情久久 | 欧美日韩精品在线免费观看 | 色婷婷久久综合 | 久久久久久国产 | 国产伦精品一区二区三区照片91 | 麻豆一区二区三区精品视频 | 国产传媒毛片精品视频第一次 | 九九热精| 中文字幕在线视频免费视频 | 久久精品在线 |