JavaScript学习笔记 | 青训营

53 阅读4分钟

一、js简介· 

JavaScriptJS)是一种轻量级,解释型或[即时]编译的编程语言,具有[一流的函数]。虽然它最着名的是网页的脚本语言,[但许多非浏览器环境]也使用它,例如[Node.js],[Apache CouchDB]和[Adobe Acrobat]。JavaScript是一种[基于原型]的多范式,单线程,动态语言,支持面向对象,命令式和声明式(例如函数式编程)样式。

二、 写好JS的一些原则

  • 各司其职:

    • 让HTML CSS JavaScript职能分离
  • 组件封装:

    • 好的UI组件具备正确性 扩展性 复用性
  • 过程抽象:

    • 应用函数式编程思想

三、 常见错误

一般来说,当您在代码中做错某些事情时,您会遇到两种主要类型的错误:

语法错误:这些是代码中的拼写错误,实际上会导致程序根本无法运行,或者中途停止工作 - 通常也会提供一些错误消息。这些通常都可以修复,只要您熟悉正确的工具并知道错误消息的含义!

逻辑错误:这些错误是语法实际上正确的,但代码不是您想要的,这意味着程序成功运行但给出不正确的结果。这些通常比语法错误更难修复,因为通常没有错误消息将您定向到错误的根源。

四、 组件封装

组件是指web页面上抽出来一个个包含模板(HTML)、功能(JS)和样式(CSS)的单元。好的组件具备封装性、正确性、扩展性、复用性。 关于组件封装有以下几个方向需要注意:

结构设计

展现效果

行为设计

API (功能)

Event (控制流)

但组件封装不能只局限于把功能大致实现的状态,我们更应该思考,在功能完美展现的同时如何让组件的性能得到更好的优化。有些时候,我们封装的组件会显得过于繁琐、呆板、不够灵活。所以我们更需要接下来的步骤进行二次优化。

三次重构:

插件化 将控制元素抽取成插件 插件与组件之间通过依赖注入方式建立联系 模板化 将HTML模板化,更易于扩展 抽象化(组件框架) 将组件通用模型抽象出来

五、过程抽象

通过上面的三次重构,就可以使组件性能达到最优吗?不,我们还需要进行一些过程抽象的操作。

过程抽象 是用来处理局部细节控制的一些方法和函数式编程思想的基础应用,通常通过高阶函数(参数值为函数,返回值也为函数的一类函数)来实现。

高阶函数的特点是输入是函数,返回还是函数。输入的函数是实际的要执行的操作或要完成的功能的函数,但是该函数是作为过程被保留出来的,把原有的完整的处理代码中的共性的部分剥离出来(或抽象出来),即抽象过程,业务的具体的代码作为函数被保留下来,也就是作为高阶函数的参数函数传递进去;然后,高级函数中完成抽象的过程后,把传递给装饰函数(也就是返回函数)的作用域、参数,原封不动的传递到输入函数(也就是实际完成操作的具体的函数)中并执行,和直接执行输入函数是一样的效果(加上抽象出的过程场景的处理代码),因此书写上输入函数几乎就是原本要实现的代码函数。也就做到了不影响原函数的情况下,完成对原函数的包装(装饰),函数拦截器的实现即来源于此。once、debounce、throttle的实现来源于纯粹的对过程抽象。纯函数则来源于将所有的影响外部环境的代码、非幂等的代码保留下来,抽象其他过程的实现。

常用的高阶函数:

Once Throttle Debounce Consumer Iterative 编程范式又分为命令式和声明式。