新聞中心
您應(yīng)該使用像map、filter和reduce這樣的函數(shù),而不是編寫for或while循環(huán)。這是個推薦做法,因為:

10年積累的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有色尼免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
循環(huán)使產(chǎn)生代碼副作用變得容易,而副作用就會使代碼邏輯變成意大利面條,雜亂無章。
當(dāng)你試圖同時做不止一件事情時,循環(huán)會你陷入痛苦。
函數(shù)式編程可以防止代碼產(chǎn)生與感冒藥一樣多的副作用。它迫使你一次只做一件事,而且比循環(huán)更具可讀性。
循環(huán),就像指針一樣,是一種簡單的編程方法。它們對于某些關(guān)鍵代碼非常有用,但我想會說,我們中很少有人在研究顯卡驅(qū)動程序。
讓我們切入正題——這里有一個JavaScript程序的比較。首先,老舊的循環(huán)版本:
- const cats = ['Antonio', 'Squid', 'Tornado', 'Avocado', 'Barnacles', 'Abroteus'];
- const stringStartsWithA = x => x[0].toLowerCase() === 'a';
- const catsWhoseNameStartsWithA = [];
- for (let i = 0; i < cats.length; i++) {
- if (stringStartsWithA(cats[i])) {
- catsWhoseNameStartsWithA.push(cats[i]);
- }
- }
- console.log(catsWhoseNameStartsWithA);
- // Output:
- // ["Antonio", "Avocado", "Abroteus"]
下面是新式的函數(shù)式編程:
- const cats = ['Antonio', 'Squid', 'Tornado', 'Avocado', 'Barnacles', 'Abroteus'];
- const stringStartsWithA = x => x[0].toLowerCase() === 'a';
- const catsWhoseNameStartsWithA = cats.filter(stringStartsWithA);
- console.log(catsWhoseNameStartsWithA);
- // Output:
- // ["Antonio", "Avocado", "Abroteus"]
當(dāng)然,這是一個簡單的示例,并且很可能是一個非常適合過濾器(filter)的用例。盡管如此,我們還是把5行混亂的代碼變成了….0行?在***個示例中,我們已經(jīng)使用了一行代碼來聲明數(shù)組。
這里的樂趣并沒有到此為止:我們用過濾器來做例子,但還有更多像map, reduce, sort和flatten這樣的用法。它們?yōu)槲覀兙帉懹袆?chuàng)意,優(yōu)雅,最重要的是易于理解的代碼提供了巨大的空間!
你怎么認(rèn)為?也許我的例子有失偏頗,也許我完全錯了。請在評論中告訴我-我感謝任何和所有的反饋!
網(wǎng)頁標(biāo)題:2分鐘編程技巧:不要在代碼中使用循環(huán)
URL標(biāo)題:http://m.fisionsoft.com.cn/article/dhjgopd.html


咨詢
建站咨詢
