国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

不使用 JS 匿名函數(shù)理由

2024-05-06 15:24:20
字體:
供稿:網(wǎng)友

匿名函數(shù)的基本形式為(function(){...})();

前面的括號包含函數(shù)體,后面的括號就是給匿名函數(shù)傳遞參數(shù)并立即執(zhí)行之

匿名函數(shù)的作用是避免全局變量的污染以及函數(shù)名的沖突

無論你在什么時候讀代碼,您都必須注意到匿名函數(shù)。有時它們被稱為 lambda,有時是匿名函數(shù),不管怎樣,我認(rèn)為他們是不好使用的。

如果你不知道匿名函數(shù)是什么,這里有一個引語:

匿名函數(shù)是一種在運行時動態(tài)聲明的函數(shù)。它們之所以被稱為匿名函數(shù)是因為不同于普通函數(shù),它們并沒有函數(shù)名 。 — Helen Emerson, Helephant.com

匿名函數(shù)形式如下:

function () { ... code ... }OR(args) => { ... code .. }

我今天嘗試讓大家理解通常情況下只有在絕對需要的情況下才使用匿名函數(shù)的想法。匿名函數(shù)不應(yīng)該是首選,而且應(yīng)該知道原因情況下使用。當(dāng)理解這種想法之后,你的代碼會變得更簡潔,更容易維護(hù),并且更容易跟蹤bug。先從避免使用匿名函數(shù)的三個理由開始:

你寫代碼的時候, 無論你多么擅長敲代碼, 總是會碰到錯誤。有時候,這些錯誤很容易被查出,有時候并不容易。

如果你知道這些錯誤來自哪里,那么錯誤很容易會被查出來。為了查出錯誤,我們使用這個被叫做堆棧軌跡的工具。如果你不了解 堆棧軌跡 ,goole給出了很棒的介紹。

假設(shè)現(xiàn)在有一個非常簡單的工程:

function start () { (function middle () { (function end () {  console.lg('test'); })() })()}

上面代碼里面有一個非常愚蠢的錯誤,拼寫錯誤(console.log)。在小工程里面,這個拼寫錯誤不是什么大問題。 如果這是一個有非常多模塊非常大的工程的一小段,問題就大了。假設(shè)這個愚蠢的錯誤不是你犯的,那么新來的初級工程師將會在他休假之前把這個錯誤提交到代碼庫!

現(xiàn)在,我們必須追查。 使用我們精心命名的函數(shù), 我們得到如下的堆棧跟蹤:

謝謝你命名你的函數(shù) ,初級開發(fā)者們! 現(xiàn)在我們可以輕松地追蹤到這個bug。

但是..一旦我們解決了這個問題, 就會發(fā)現(xiàn) 還有另一個bug。 這次是一位更資深的開發(fā)人員介紹的。這個人知道 lambdas
結(jié)果他們偶然發(fā)現(xiàn)了一個bug,我們的工作就是追蹤它。

下面是代碼:

(function () { (function () { (function () {  console.lg('test'); })(); })();})();

吃不吃驚,這名開發(fā)者也忘記了如何拼寫console.log了!這也太巧合了吧!令人感到遺憾的是,他們都沒有命名他們的函數(shù)。

那么控制臺會輸出什么呢?

好吧,我們至少還有行號,對吧?在這個例子中,看起來我們有大約7行代碼。如果我們處理一大段代碼會如何呢?比如一萬行代碼?行號的跨度如此之大該怎么辦呢?如果代碼被折疊后有沒有一個代碼地圖文件,那么對行號的渲染是不是根本就是沒有什么用了呢?

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 西昌市| 张掖市| 页游| 临漳县| 黎川县| 长垣县| 苏尼特左旗| 丰原市| 田东县| 香格里拉县| 昭通市| 张家港市| 屯昌县| 马山县| 右玉县| 仁寿县| 阳原县| 隆回县| 云霄县| 武宁县| 通辽市| 米脂县| 甘孜县| 芜湖市| 葵青区| 淮安市| 葫芦岛市| 双流县| 富蕴县| 呼伦贝尔市| 颍上县| 广昌县| 长汀县| 来安县| 罗城| 韶关市| 临漳县| 宁化县| 城步| 阿尔山市| 祁东县|