JavaScript 函数式编程
发表于 更新于 本文字数: 6.6k 阅读时长 ≈ 6 分钟
函数式编程风格起源于 20 世纪 30 年代 lambda
演算的发明。函数自 17 世纪诞生以来,一直是作为微积分的一部分而存在的。函数可以作为函数的参数传递,还可以作为函数的执行结果被返回。更复杂的函数被称为高阶函数,它可以精确的控制函数,既可以将函数当作参数传递,也可以将函数作为执行结果返回,或者二者兼而有之。在 20 世纪 30 年代,Alonzo Church 在普林斯顿大学用高阶函数做实验时发明了 lambda
演算。
20 世纪 50 年代初,John McCarthy 借鉴了 lambda
演算的概念,并将它应用到一门新的名为 Lisp 的编程语言上。Lisp 实现了高阶函数的概念,并将函数作为第一类成员或者第一类公民。一个函数被当作第一类成员时,它不仅可以被声明为一个变量,而且可以被当作函数参数传递。这些函数甚至可以作为函数的执行结果被返回。
什么是函数式编程
JavaScript 可以进行函数式编程,因为 JavaScript 中的函数就是第一类公民。这意味着变量可以做的事情函数同样也可以。ES6 标准中还添加了不少语言特性,可以帮助我们更充分地使用函数式编程技术,其中包括箭头函数、Promise 对象和扩展运算符等。
ECMAScript 5的严格模式
发表于 更新于 本文字数: 8k 阅读时长 ≈ 7 分钟
ECMAScript 5 引入了 strict mode
,现在已经被大多浏览器实现(包括 IE10)。会使 web 浏览器更容易的解析代码(只需要添加 "use strict";
在源码的最上面)。
严格模式不仅仅是一个子集:它的产生是为了形成与正常代码不同的语义。不支持严格模式与支持严格模式的浏览器在执行严格模式代码时会采用不同行为。所以在没有对运行环境展开特性测试来验证对于严格模式相关方面支持的情况下,就算采用了严格模式也不一定会取得预期效果。严格模式代码和非严格模式代码可以共存,因此项目脚本可以渐进式地采用严格模式。
严格模式对正常的 JavaScript 语义做了一些更改。
- 严格模式通过抛出错误来消除了一些原有静默错误。
- 严格模式修复了一些导致 JavaScript 引擎难以执行优化的缺陷:有时候,相同的代码,严格模式可以比非严格模式下运行得更快。
- 严格模式禁用了在 ECMAScript 的未来版本中可能会定义的一些语法。
非严格模式到严格模式的区别
严格模式同时改变了语法及运行时行为。
申城四月花争艳,最美樱花绽顾村
发表于 更新于 本文字数: 389 阅读时长 ≈ 1 分钟
JavaScript 的 Async/Await
发表于 更新于 本文字数: 3.1k 阅读时长 ≈ 3 分钟
在过去很长的时间里,JavaScript 开发人员在处理异步代码时不得不依赖回调函数来解决。结果,我们中的很多人都经历过回调地域。
然后我们迎来了 Promise。他们为回调提供了更有组织的替代方案,并且大多数社区很快也都转而使用它们。
现在,随着最新添加的 Async / Await,我们终于可以编写更高质量的 JavaScript 代码!
什么是 Async/Await?
Async / Await 是一个备受期待的 JavaScript 功能,它使异步函数的使用更加愉快和易于理解。它构建在 Promise 之上,并与所有现有的基于 Promise 的 API 兼容。
Async - 定义异步函数
1 | async function someName(){...} |
- 自动把函数转换为
Promise
- 当调用异步函数时,函数返回值会被
resolve
处理 - 异步函数内部可以使用
await