言
可能你會很熟練,但名稱不一定知道。
正文從這開始~~
讓我們談談什么是:lambdas(匿名函數)、 first-class functions(頭等函數)、higher-order functions(高階函數)、unary functions(一元函數)、currying(柯里化 )和pure functions(純函數)。
如果您不清楚命令式和聲明式編程之間的區別,可以看我的文章: Imperative versus declarative code… what’s the difference?
什么是Lambdas(匿名)=> 箭頭函數?
Lambdas (λ) 在 JavaScript 作為arrow functions(箭頭函數)被廣為所知:
// this is your regular named function in JavaScriptfunction namedFunction (a, b) { return a + b;}// this is a lambda, i.e. an arrow functionconst lambda = (a, b) => a + b;
術語lambda是一個正式的數學邏輯系統,起源于lambda演算。Lambda演算是由圖靈完成的,它代表了能夠構建任何圖靈機的通用計算模型。 Lambda expressions(匿名函數表達式) 是函數式編程的基石。如果它對你有所幫助,只需將它視為函數的新縮短語法就行。然而,在對象或類中使用它們時要注意this的指向。
什么是first-class functions(頭等函數)?
First-class type 意味著,該類型可以用作變量的值。在JavaScript中一個字符串是頭等類型,一個函數也是頭等類型。所以函數可以接受其他函數作為參數,并返回函數作為返回值。
在綁定事件監聽器時,函數作為first-class被使用:
const handler = () => console.log ('I am function'); document.addEventListener ('click', handler);
什么是higher-order functions(高階函數)?
高階函數是一個接受其他函數作為參數或將函數作為返回值返回的函數。 First-order function(一階函數)是一個函數,它不接受其他函數作為參數,并且不返回函數作為其返回值。
const firstOrder = () => console.log ('First order strikes back!');const higherOrder = whoStrikesBack => whoStrikesBack (); higherOrder (firstOrder);
什么是unary functions(一元函數)?
該術語涉及一個函數接受一些參數的元數。一元函數(i.e. monadic)是一個只接受一個參數的函數。
const unaryFunction = message => console.log (message);const binaryFunction = (color, message) => console.log (`%c${message}`, `color:${color}`);const ternaryFunction = (fnc, color, message) => fnc (`%c${message}`, `color:${color}`);
什么是currying(柯里化)?
Currying(柯里化)是一個帶有多個參數的函數并將其轉換為函數序列的過程,每個函數只有一個參數。
一個有n個參數的函數,可以使用柯里化將它變成一個一元函數。
const binaryFunction = (a, b) => a + b;const curryUnaryFunction = a => b => a + b; curryUnaryFunction (1); // returns a function: b => 1 + b curryUnaryFunction (1) (2); // returns the number 3
Currying(柯里化)以數學家 Haskell Curry的名字命名,不是吃的。
柯里化函數非常適合提高代碼的可重用性和函數式結構。想了解更多,請參考: JavaScript ES6 curry functions with practical examples。它可能會讓人習慣,但是我現在寫的所有函數都歸功于柯里化。
什么是pure functions(純函數)?
純函數是一種其返回值僅由其參數決定,沒有任何副作用的函數。
這意味著如果你在整個應用程序中的不同的一百個地放調用一個純函數相同的參數一百次,該函數始終返回相同的值。純函數不會更改或讀取外部狀態。
let myArray = [];const impureAddNumber = number => myArray.push (number);const pureAddNumber = number => anArray => anArray.concat ([number]); console.log (impureAddNumber (2)); // returns 1 console.log (myArray); // returns [2] console.log (pureAddNumber (3) (myArray)); // returns [2, 3] console.log (myArray); // returns [2] myArray = pureAddNumber (3) (myArray); console.log (myArray); // returns [2, 3]
在數組中,Push函數就是不純的,它會改變它所調用的數組,因此會產生副作用。 push的返回值是一個數字索引。
另外,Concat接受數組并將其與另一個數組連接,從而產生一個沒有副作用的全新數組。然后返回兩個數組串聯后的新數組。
純函數很重要,因為它們簡化了單元測試(沒有副作用,也不需要依賴注入),它們避免緊密耦合,并通過消除副作用,使應用程序更加簡潔。
我專門撰寫了一篇文章來討論純函數在編程中的最佳實踐:JavaScript Pure Functions for OOP developers
結語
理解函數式編程并不能讓你成為更好的開發者,它會讓你成為一個更好的人。你可以通過lambda演算用啤酒來招待你的朋友,可以通過有趣的數學邏輯來糾正你的家人。
要在實踐中使用所有這些術語,請閱讀:8 steps to turn imperative JavaScript class to a functional declarative code
另外,要了解有關條件語句和條件表達式的更多信息,請閱讀:How to replace switch and ternaries in functional JavaScript
關于本文
譯者:@reahink
譯文:https://zhuanlan.zhihu.com/p/61868946
作者:@Martin Novák
原文:https://medium.com/front-end-weekly/6-fundamental-terms-in-functional-javascript-e25d50d40b2c
字營銷有許許多多的專業術語、術語和縮略詞,幾乎就像學習另一門語言一樣。
對于一些數字營銷的新手來說,一些基本的術語還很生疏,很多時候都會為此迷惑,因此本文總結了每個數字營銷人員都應該了解的33個重要術語,希望對營銷新手們有幫助。
1、Algorithm/算法:由某些計算或問題解決過程確定的一套規則。在數字營銷中,算法可以通過精確地定位受眾的興趣、活動及喜好等等,從而了解他們的行為和消費心理細分。
2、API(Application Programming Interface)/應用程序接口:用于顯示程序如何通過數據與應用程序交互的過程。
3、Avatar/頭像:指用戶在網站、社交媒體等平臺上的個人資料圖片。
4、Backlink/反向鏈接:指外部網站或網頁中所提供的鏈接可返回到你的網站。這是一種流行的SEO策略,可以提高網站的搜索排名、流量、參與度等。
5、Banner/橫幅廣告:一種位于網站高可視性和高流量區域的數字廣告形式。
6、Bounce Rate/跳出率:僅瀏覽網站一個頁面就退出的次數百分比。
7、Cookie:Cookie指某些網站為了辨別用戶身份而儲存在用戶本地終端上的數據,追蹤Cookie可以幫助營銷人員識別和追蹤受眾特征和偏好,并自定義網絡體驗和定位廣告。
8、CPC/每次點擊成本:也稱為PPC(點擊付費廣告),當用戶點擊某個網站上的CPC廣告后,這個站的站長就會獲得相應的收入,是廣告界最常見的定價方式
9、CRO/轉化率優化:轉化率指網站訪問者中轉化的訪客占全部訪客的比例,CRO就是通過數據分析,對網站的用戶轉化率進行最大化建模。
10、CTR/點擊率:點擊網站廣告鏈接的人數占總瀏覽量的百分比,營銷人員通常使用CTR來衡量廣告效果。
11、Domain/域名:域名是互聯網上由一串用點分隔的字符串組成的標識計算機電子方位的名稱,選擇一個合適的域名是SEO營銷的第一步。
12、Email Marketing/電子郵件營銷:通過電子郵件宣傳產品和服務,可以幫助發展和培養與客戶的關系。
13、Engagement Rate/參與率:衡量受眾的評價、點贊和分享等,參與度涉及不同層面(從具體的帖子到營銷活動)。
14、Heatmap/熱圖:通過使用彩圖(紅色=點擊量,綠色=點擊量)來體現人們如何與網站交互。有很多方法可以跟蹤和分析這些數據,常用的方法有:點擊跟蹤、眼球跟蹤等。
15、Hyperlink/超鏈接:位于網站或網頁內的鏈接,將人們引向另一個網站或網頁。
16、Impression/曝光:表示某一內容(展示廣告、社交媒體帖子等)被網站訪問者瀏覽的次數。
17、Inbound Link/入站鏈接:網站外部的鏈接或驅動到你網站的網頁鏈接。
18、Internal Link/內部鏈接:網站內提供的鏈接,該鏈接可以驅動到網站中的另一個頁面。
19、Keyword Stuffing/關鍵詞堆砌:在網頁中大量堆砌關鍵詞,希望提高關鍵詞密度,并提高網頁針對關鍵詞的相關度。但搜索算法會檢測到這一點,并做出對應的排名懲罰。
20、Landing Page/登陸頁面:訪問者在點擊超鏈接時首先登陸的網站頁面。常見的登錄頁面是網站主頁或特定產品的頁面。對于登錄頁面來說,吸引用戶的注意力并促使他們采取行動是很重要的。
21、Long-Tail Keyword/長尾關鍵字:由三到四個字組成的關鍵字短語,是特定于產品或服務的。長尾關鍵字是瞄準那些尋找特定的產品和服務的客戶。
22、Mention/提及:當其他品牌、行業網紅或出版物提到你的品牌或產品時。
23、Metadata/元數據:描述數據的一串數據,對數據及信息資源的描述性信息。它控制網站和搜索引擎之間的交互。網站訪問者幾乎看不到它,因為它被構建到網頁的HTML中。元數據有助于處理不同類型的數據,是幫助分析和改進SEO的一個很好的資源。
24、Organic Traffic/自然流量:與付費流量不同,自然流量不涉及任何付費廣告,所有訪客都是自然訪客。
25、Pop-Up/彈出式廣告:在新的瀏覽器窗口中生成的在線廣告形式。需要注意的是,消費者通常都很厭煩這種廣告形式,賣家需要注意規避。
26、Real-Time Bidding/實時競價:即在每個廣告展示曝光的基礎上進行實時競價的新興廣告類型。它通過減少浪費曝光的次數來提高整體效率。實時競價通常發生在供方平臺上,幫助競標者決定購買哪種廣告曝光。
27、Referral/推薦:與使用傳統的營銷方法不同,推薦營銷依賴于口碑營銷,即客戶與感興趣的購物者談論產品和服務。在線評論網站在推薦營銷中發揮著巨大的作用。
28、SEM /搜索引擎營銷:一種營銷策略,主要通過付費廣告來提高網站或特定帖子的谷歌搜索排名。數字營銷人員通常負責提高網頁排名。
29、SEO/搜索引擎優化:提高網站的質量和流量。SEO策略包括確保標題標簽、元描述和內部鏈接都是正確創建的,以驅動web頁面的流量。
30、SERP/搜索引擎結果頁面:當人們使用搜索引擎通過某些關鍵字搜索某些內容時,會看到的頁面。該頁面包含兩個不同的結果——付費搜索和自然搜索。付費搜索結果來自付費在SERP上顯示其網站或網頁的廣告商,而自然搜索結果是基于SEO顯示的網站。
31、UI/用戶界面:是指對軟件的人機交互、操作邏輯、界面美觀的整體設計。UI在設計方面起著重要的作用,例如標識或圖標的大小或整體對齊。
32、Unique Visitor獨立訪客:指的是在特定時間內,一個人對某個站點至少訪問一次。這通常是通過從同一個IP地址中區分多個訪問來計算的。在網站數據分析方面,識別獨立訪問可以應用到很多方面。例如,它能幫助營銷人員構建元數據,這些元數據可以用于在未來創建用戶子類別。
33、UX /用戶體驗:指終端用戶與品牌、產品和服務等之間的整體互動。它包含營銷、工程和設計組件,而不僅僅是提供客戶滿意度。分析用戶體驗可以幫助營銷人員確定可以進行改進的內容點,幫助調整和優化營銷方案。
(編譯/雨果網 宋淑湲)
【特別聲明】未經許可同意,任何個人或組織不得復制、轉載、或以其他方式使用本網站內容。轉載請聯系:editor@cifnews.com
您了解 HTML 和 Web 時,您可能會發現反復遇到一個通常未定義的特定單詞。那個詞是語義的。
你可能會讀到諸如“我們去尋找語義元素”或“我們盡量做到語義化”之類的陳述,但永遠無法清楚地了解語義這個詞的含義。在本文中,我們將探索語義標記的世界,提出術語的有效定義,并將該概念應用于我們編寫 HTML 標記的方式。
根據 Dictionary.com 的說法,語義是指對單詞或句子含義的正確解釋。
從語義上使用一個詞就是以一種與該詞的含義正確對齊的方式使用它。當我們誤用一個詞時,我們并不是在語義上使用它。
許多 HTML 標簽具有語義含義。也就是說,元素本身傳達了一些關于包含在開始標簽和結束標簽之間的內容類型的信息。
例如,當瀏覽器遇到一個h1標題時,它會將該標記解釋為表示該元素的內容h1構成了包含該元素的部分的最重要的標題。標簽的語義含義h1是它用于標識特定網頁或部分的最重要的標題。
如果我們要編寫語義標記,必須采用兩種不同的做法。
在編寫語義標記時,我們使用 HTML 標簽來告訴瀏覽器元素的內容。在語義標記中,標簽不再只是讓內容以人類可讀的格式顯示在網頁上的一種方式。
標簽本身成為一種告訴機器(無論是瀏覽器、計算機、智能手機還是其他智能設備)有關內容含義的方式。
要編寫語義標記,我們必須正確使用 HTML 標簽,以便我們的標記既是人類可讀的,也是機器可讀的。
過去,通常使用標記來定義樣式和控制網頁布局。
標題級別的選擇不是基于層次結構,而是基于 Web 瀏覽器應用的樣式,表格用于網頁布局而不是組織表格數據,一些 HTML 標記(例如frameset)是為了明確定義網頁而創建的布局等等。
當我們編寫語義標記時,我們不能再根據視覺呈現來選擇 HTML 元素。相反,我們根據語義含義選擇 HTML 元素,然后使用CSS定義我們內容的視覺呈現。
在編寫語義標記時,網頁元素的表示與內容本身的標記完全分離和不同。
考慮到這兩種做法,我們可以這樣定義語義標記:
語義標記是使用諸如 HTML 之類的標記語言通過正確選擇標記元素來傳達有關文檔中每個元素的含義的信息,并保持標記和文檔中包含的元素的視覺呈現之間的完全分離.
好的 CSS 可以使普通網站訪問者看不到不好的標記。然而,再多的樣式也不會讓糟糕的標記對計算機化的訪問者更有意義,例如搜索引擎網絡爬蟲、瀏覽器翻譯工具或屏幕閱讀器等輔助技術。
根據 Bruce Lawson的說法,HTML 元素的語義使用“增強了可訪問性、可搜索性、國際化和互操作性”。換句話說,如果您希望所有訪問者都可以訪問您的網站、實現較高的搜索引擎排名、可供來自世界各地的訪問者使用以及與其他 Web 服務有效交互,則必須編寫語義標記。
編寫語義標記是關于創建人類和計算機可讀的 Web 內容。當人類和計算機都可以很好地閱讀網絡時,它就變得更易于訪問,因為計算機能夠更好地分析其內容、索引、交付它,并且開發人員能夠更好地將不同的信息源結合到新的網絡服務中.
我們通過正確選擇和使用 HTML 標記以及通過選擇傳達有關標記所標記信息的某些標記來編寫語義標記。
HTML 中有語義元素和非語義元素。非語義元素的示例是div和span。這些標簽不會告訴計算機有關元素內容含義的任何信息。
雖然有用,并且在某些情況下可以很好地使用,但如果語義標簽可用并且適合特定用途,請在使用非語義標簽之前使用它。
許多語義標簽來自谷歌和Opera等公司完成的網頁標記分析。這些公司發現,許多網站使用id和class屬性來暗示非語義元素內容的含義。
例如,他們發現了很多看起來像這樣的 div:<div id="nav">、<div id="header">和<div id="footer">。此類發現有助于 W3C 識別和定位新的語義標簽以包含在 HTML5 中,例如:nav和。我們可以將最常見和最重要的語義元素分為四類:header``footer``article``aside
過去,div元素是識別和分組網站部分的主要方式。然而,隨著 HTML5 的發布,除了標簽提供的分組屬性之外,我們還有幾個新標簽可供使用,這些標簽提供語義含義div:
在網絡的早期,通常會看到這樣的標記:
<style>
.italics { font-style: italic; }
</style>
<p>Some paragraph content including one
<span class="italics">italicized</span> word.
</p>
今天我們(希望)不會夢想做這樣的事情,因為span元素告訴瀏覽器和其他計算機訪問者完全沒有關于嵌套在開始和結束標記之間的文本的含義或目的。我們不會使用非語義標簽,而是在應該以斜體顯示的單詞周圍span添加標簽。em通過使用em標簽,使用屏幕閱讀器或訪問內容的其他計算機的訪問者將了解應用標簽以增加對已標記內容的強調。該em元素只是 HTML 標記如何為文本內容添加語義含義的一個示例。其他示例包括:
我們的字體和 Web 排版教程提供了大量關于正確使用這些標簽來為文本內容分配語義含義的詳細信息。
HTML5 還包括三個標簽,用于標識標簽之間提供的媒體類型。這些標簽有雙重用途。首先,它們向瀏覽器發出信號,需要對特定技術資源(例如視頻播放引擎)進行排隊。其次,他們為內容賦予語義意義。
您可以在我們的HTML5 媒體教程中了解有關嵌入audio和video元素的更多信息。此外,我們關于在網絡上使用圖像的文章提供了有關何時使用該元素以及何時堅持使用該元素的更多信息。picture``img
幾個 HTML 元素用于表示多個元素之間的相關性。例如,使用有序列表 ( ol) 告訴瀏覽器列表中的項目彼此相關,需要以特定的順序出現。用于表示多個元素之間相關性的其他元素包括:
如果您是 HTML 新手,請花時間學習如何在語義上使用所有這些不同的 HTML 標記。如果您不確定您使用的標簽是否正確,請花幾分鐘時間進行一些研究。正如我們所見,使用正確的標簽很重要。如果您已經使用 HTML 一段時間了,請花點時間了解新的 HTML5 元素以及如何正確使用它們。在過去的幾年里,HTML 變得越來越復雜,繼續使用div帶有class和id屬性,但語義 HTML5 標記的可訪問性和互操作性承諾足以接受這些新的語義元素。
那么你已經了解清楚語義標記了嗎?
*請認真填寫需求信息,我們會在24小時內與您取得聯系。