JavaScript-基础概念
2020-07-23 本文已影响0人
zhulichao
柯里化
柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。柯里化声称“如果你固定某些参数,你将得到接受余下参数的一个函数”。如对于有两个变量的函数yx,如果固定了 y = 2,则得到有一个变量的函数 2x。
不可变数据
不可变数据(Immutable Data)的思想就是,一旦创建就不能被修改的数据,所有对Immutable Data的改变,最终都会返回一份新复制的数据,各自的数据并不会互相影响。
函数式编程
函数式编程是一种编程范式,和面向对象的编程方式一样,是一种编程思想。它属于"结构化编程"的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。它的原理将电脑运算视为函数的计算,它的基础是λ演算,λ演算的函数可以接受函数当作输入和输出。最主要的特征是,函数是第一等公民。和指令式编程相比,函数式编程强调函数的计算比指令的执行重要。和过程化编程相比,函数式编程里函数的计算可随时调用。函数式编程认为,只有纯的没有副作用的函数,才是合格的函数。
单页应用(SPA)和多页应用(MPA)
单页应用将所有的活动局限于一个Web页面中,仅在该Web页面初始化时加载相应的HTML、JavaScript和CSS。一旦页面加载完成了,SPA不会因为用户的操作而进行页面的重新加载或跳转。取而代之的是利用JavaScript动态的变换HTML的内容,从而实现UI与用户的交互。由于避免了页面的重新加载,SPA可以提供较为流畅的用户体验,但不利于SEO。MVVM这类最适合做单页面应用。
多页面一般每个页面都有一个入口页面,页面跳转用普通的<a href=\"\"></a>
,会进行整个页面的刷新。
发布订阅模式
订阅发布模式定义了一种一对多的依赖关系,让多个订阅者对象同时监听某一个主题对象。这个主题对象在自身状态变化时,会通知所有订阅者对象,使它们能够自动更新自己的状态。当一个对象的改变需要同时改变其它对象,而且它还不知道具体有多少对象需要改变时,就可以使用订阅发布模式了。
观察者模式与发布订阅模式很像,虽然两种模式都存在订阅者和发布者(具体观察者可认为是订阅者、具体目标可认为是发布者),区别是观察者模式是由具体目标调度的,而发布订阅模式是统一由调度中心调的,所以观察者模式的订阅者与发布者之间是存在依赖的,而发布订阅模式则不会。
纯函数
纯函数是这样一种函数,即相同的输入,永远会得到相同的输出,而且没有任何可观察的副作用,JavaScript中指不依赖于且不改变它作用域之外的变量状态的函数。只要是跟函数外部环境发生的交互就都是副作用,副作用可能包含但不限于:
> 更改文件系统
> 往数据库插入记录
> 发送一个 http 请求
> 可变数据
> 打印/log等IO操作
> 获取用户输入
> DOM 查询
> 访问系统状态
> 访问系统时钟