让我们假装现在要完成一个任务:尽可能按照函数式语言的原则来写JavaScript代码。
接下来一系列文章就是为了让你们和我一起开始这样一段旅程。首先,我们需要纠正一些你们脑子中可能有的对函数式语言错误的概念。
JS语言中的函数式被严重误解。
很显然,有相当多的开发者要每天用JavaScript的函数式范式 。我想说有更大一部分JavaScript 开发者没有真正理解这些东西。
我认为造成这个的原因是绝大多数用于Web服务器端的开发语言都是来源于C,而大家都知道这些语言不是函数式语言。
一般有两个层面的困惑。第一层是关于以下示例中的用法,这是jQuery中非常常见的用法:
$(".signup").click(function(event){ $("#signupModal").show(); event.preventDefault(); });
在上面这段代码中:我们传了一个匿名函数作为参数,这就是在JavaScript 中臭名昭著的回调函数。这些函数会被调用吗?根本不会!
上面这个例子说明了函数式语言的一个关键特征:函数是一种参数。另一方面,这个例子只用三行代码违反了几乎所有能违反的函数式编程范式。
第二层的疑惑是更微妙的。看看这个:只有少数时髦的JS开发者是这样看自己的:
嗯,真不错!但是我已经完全了解函数式编程,我在所有的项目中都用了Underscore.js。
Underscore.js是一个非常著名并且随处可见的JavaScript 库。举个例子:假设我有一组词,并且我需要每个词对应的前两个字母。这用Underscore.js来写非常简单:
var firstTwoLetters = function(words){ return _.map(words,function(word){ return _.first(word,2); }); };
看这个JavaScript 例子。我用了函数式中精致又实用的函数:_.map和_.first。对于这个大家有什么想法?
虽然underscore.js和 _.map这样的函数都是很有用的函数式范式,但是像这个例子中这样把这些东西放在一起还是让我感到有些难以理解。我们真的需要这样做吗?
如果我们开始思考怎样才能更加“函数式”,也许我们可以把上面的例子改写成这样:
// ...a little bit of magic var firstTwoLetters = map(first(2));
仔细想想,这一行代码和上面的5行是一样的效果。很多词只是参数或占位符。真正的逻辑在于把map函数、first函数和常量2用有意义的方式组合在一起。
有些人可能在想:这个例子中的神奇之处在哪里?毕竟,说任何一个例子神奇都有点像吹嘘,对吧?
我正打算用接下来的两篇文章来解释上面这个例子到底神奇在哪,如果你好奇的话,可以继续往下看。
这一系列博客是为了帮助大家怎样把函数式编程的美妙之处应用到你的JavaScript代码中。
下一节中,我将讨论JavaScript 语言中函数式及非函数式的多种元素。有了这些知识,我们可以通过把这些元素整合在一起,慢慢的在脑中形成函数式编程的完整体系,并且理解它们在JavaScript中的表现。
本文向大家介绍JavaScript函数模式详解,包括了JavaScript函数模式详解的使用技巧和注意事项,需要的朋友参考一下 在javascript中,函数是一类对象,这表示他可以作为参数传递给其他函数;此外,函数还可以提供作用域。 js函数基础部分:javascript学习笔记(四)function函数部分 创建函数的语法 命名函数表达式 函数表达式 函数的声明 在尾随的分号中,函数表达式应总
目录表 简介 定义函数 函数形参 使用函数形参 局部变量 使用局部变量 使用global语句 默认参数值 使用默认参数值 关键参数 使用关键参数 return语句 使用字面意义上的语句 DocStrings 使用DocStrings 概括 简介 函数是重用的程序段。它们允许你给一块语句一个名称,然后你可以在你的程序的任何地方使用这个名称任意多次地运行这个语句块。这被称为 调用 函数。我们已经使用了
本文向大家介绍JavaScript的级联函数用法简单示例【链式调用】,包括了JavaScript的级联函数用法简单示例【链式调用】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript的级联函数用法。分享给大家供大家参考,具体如下: 级联函数 级联函数就是在对象调用中通过点的方式串联调用,在jQuery中就是链式调用, 其关键点就是在内部 return this 返回自身 应
本文向大家介绍浅谈javascript函数式编程,包括了浅谈javascript函数式编程的使用技巧和注意事项,需要的朋友参考一下 函数式编程,属于编程范式的一种 1 函数是第一公民,可以返回值,也可以作为其他函数的参数 2 接近自然语言的写法 晓池吃完饭然后就去洗澡 可以表现为eat().bathe() 3 函数式编程的特性 匿名函数,即没有名字的函数,在函数式编程中很常见,有时候我们
MySQL 函数是 MySQL 数据库提供的内部函数,这些内部函数可以帮助用户更加方便地处理表中的数据。函数就像预定的公式一样存放在数据库里,每个用户都可以调用已经存在的函数来完成某些功能。 提示:函数就是输入值然后得到相应的输出结果,输入值称为参数(parameter),输出值称为返回值。 函数可以很方便的地实现业务逻辑的重用,并且 MySQL 数据库允许用户自己创建函数,以适应实际的业务操作。
本文向大家介绍JavaScript中的函数申明、函数表达式、箭头函数,包括了JavaScript中的函数申明、函数表达式、箭头函数的使用技巧和注意事项,需要的朋友参考一下 JavaScript中的函数可以通过几种方式创建,如下。 函数声明和表达式之间的差别是 JavaScript 解释器中存在一种变量声明被提升的机制,也就是说函数声明会被提升到作用域的最前面,即使写代码的时候是写在最后面,也还是会