关于JavaScript的理解笔记 | 青训营笔记

106 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第2天

关于JavaScript的理解笔记


什么是JavaScript?

JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。

写好Javascript的原则

  • 各司其职
  • 组件封装
  • 过程抽象

另外还要关注代码的代码风格、质量、效率、性能。
例如课程中讲到的当年的Leftpad事件:

//原代码
function leftpad(str, len, ch) {
      str = String(str);
      var i = -1;
      if (!ch && ch !== 0) ch = ' ';
      len = len - str.length;
      while (++i < len) {
          str = ch + str;
      }
      return str;
  } 
//修改过的其中一个版本
function leftpad(str, len, ch) {
      str = "" + str;
      const padLen = len - str.length;
      if(padLen <= 0) {
        return str;
      }
      return (""+ch).repeat(padLen)+str;
  } 

通过对比可以看出,修改过的版本代码更简洁、效率提升。因此我们也要规范我们的代码风格,力求写出更简洁高效的代码~

各司其职

让HTML、CSS和JavaScript职能分离,各司其职,避免不必要的由JS直接操作样式;可以用class来表示状态;纯展示类交互寻求零JS方案。

组件封装

组件

组件是指Web页面上抽出来一个个包含模板(HTML)、功能(JS)和样式(CSS)的单元。好的组件具备封装性、正确性、扩展性、复用性(组件设计的原则)

实现组件的步骤/基本方法

  • 结构设计
  • 展现效果
  • 行为设计==>包括API(功能)、Event(控制流-使用自定义事件来解耦)

三次重构

插件化
  • 将控制元素抽取成插件
  • 插件与组件之间通过依赖注入方式建立联系
模板化

将HTML模板化,更易于扩展

抽象化(组件框架)

将组件通过模型抽象出来

过程抽象

  • 用来处理局部细节控制的一些方法
  • 函数式编程思想的基础应用

例如,为了能让“只执行一次”的需求覆盖不同的事件处理,我们可以将这个需求剥离出来。这个过程我们称为过程抽象

(Once高阶函数⬇⬇⬇)

function once(fn) {
    return function(...args) {
      if(fn) {
        const ret = fn.apply(this, args);
        fn = null;
        return ret;
      }
    }
  }

高阶函数

  • HOF HOFO =>默认函数
  • Once => 单次函数
  • Throttle => 节流函数
  • Debounce => 防抖函数
  • Consumer => 间隔、延时
  • Iterative => 可迭代函数 (批量操作)

编程范式

命令式与声明式

命令式/指令式

命令式编程关注计算机执行的步骤,告诉编辑器如何做

声明式

声明式编程以数据结构的形式来表达程序的执行逻辑。告诉编辑器做什么,但不指定具体要怎么做。如何做的部分被封装到“高阶函数”。

总结

通过青训营的课程的学习,我对JavaScript有了更多的认识,扩展了很多以前没有学过的知识,也对javascript的运用有了一定的思路。但是依然存在很多不理解的地方,对算法的理解和运用也不够熟练,仍然需要课后去加深对这方面的学习。即便课程上老师分享的干货很多,但是javascript的内容依然有很多,我还是需要在课后继续对其学习吸收。