言
可能你会很熟练,但名称不一定知道。
正文从这开始~~
让我们谈谈什么是: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小时内与您取得联系。