浅谈es6+大杂烩

一、变量解构

       变量6种声明的方式:var、let、const、import、class、function

  1. 什么是变量解构?
           从数组或者对象中获取值,并将值赋值,则称为变量解构,分为完全结构,不完全结构,结构错误
  2. 作用:
    2.1 能迅速获取数据
    2.2 代码清晰
    2.3 对函数参数初始化赋值
  3. let、const和var区别:
    var会进行变量提升,即在变量声明前可以赋值;
    let变量声明前会形成暂时性死区,从而形成块级作用域,有点类似于闭包
    const也会形成暂时性死区,从而形成块级作用域,而且该变量无法修改
  4. 顶层对象
           在浏览器中指:window,浏览器的窗口对象;在系统中指:global;
           js最大的败笔就是将全局变量和顶层变量挂钩了,不利于模块化编程。
  5. Iterator接口
           Map、Set、Array、Object是集合,那么遍历集合就是一个基本要求,而Iterator则提供了一种统一的接口机制,任何的数据结构部署Iterator接口机制即可以遍历。
           Map、Set、Array默认是带有Iterator接口机制的,Object是没有,原因:Map数组等是线性结构,有一定的顺序,先遍历谁后遍历谁,都是特定的,但是Object没有确切的数据顺序,需要先转换成线性结构才能部署Iterator接口

二、函数扩展

1、函数参数默认值

  • 能够迅速看到哪些参数是可以省略,不用查看函数或文档
  • 促进后期维护,当不需要传参时,不会引起报错

2、与解构赋值默认值结合使用

3、函数length属性

  • 此处的length返回值是函数减去了默认赋值的参数数量

4、作用域

  • 因为有参数进行声明初始化,则会形成一个作用域context

5、函数只要使用了默认值、变量解构、或者扩展运算符,那么函数内部就不能显式设定为严格模式。

  • 原因:函数内部的严格模式,同时适用于函数体和函数参数。但是,函数执行的时候,先执行函数参数,再执行函数体

6、rest参数

  • 形式为…变量名:用于获取函数的多余参数,这样就不需要引入arguments,rest参数是一个数组,将多余的参数放入数组中

三、原型链

1、javascript是一种基于原型的语言——每个对象都拥有一个原型,对象以其原型为模板、从原型继承方法和属性。原型对象中也有可能存在原型,层层剥离,从而形成原型链:这就是为什么一个对象中会拥有定义为其他对象中的属性和方法。

2、constructor属性

  • 每个实例对象都从原型中继承了一个constructor属性,该属性指向了用于构造此实例对象的构造函数。

3、对象:唯一有继承

  • 每个实例对象都有一个私有属性(称之为__proto__)指向它的原型对象,该原型也有一个自己的原型对象,层层向上直到一个对象为null。而null没有原型,作为原型链中的最后一个环节。

4、介绍下三位大哥
原型中还有原型

  • prototype:原型对象,下的constructor指向的是自己
  • constructor:构造函数指向的是子类
  • proto:原型指向的是子类的原型对象

四、柯里化函数

1、所谓"柯里化",就是把一个多参数的函数,转化为单参数函数
2、不立即计算,延后执行
3、符合计算的条件,将缓存的参数,统一传递给执行方法
4、当一个变量需要转换类型时,会调用自身的valueOf,如果调用失败则会去调用toString()

五、函数式编程

1、开始:数学的范畴论,跟数理逻辑、微积分、行列式是一类东西,都是数学方法,碰巧用来写编程
2、函数式又分为:纯函数(不会引出额外的问题),非纯函数(会:比如改变全局变量,改变参数值,传出参数值)
3、开始数学只是去输入一个值,原始目的就是求值,不做其他事情,否则无法满足函数运算法则,所以函数式编程要求函数必须是纯的。
4、函子是函数式编程里最重要的数据类型,也是基本的运算单位和功能单位。
5、函数的调用,尾调用会形成一个调用栈,尾调用即是函数的最后一步操作。
6、递归是非常耗费内存,因为需要同时保存成千上百个调用帧,很容易发生‘栈溢出’错误。
7、递归和尾递归

  • 递归:指的是程序调用自身的编程技巧,一般递归是需要有边界条件,满足条件时,为递归前进,不满足则递归返回。

六、工程化

组件化指的是在设计层面上,对ui进行拆分,从而形成若干个组件,页面是最大的组件,而dom是最小的组件;
模块化指的是讲一个大文件拆分成相互依赖的小文件,再进行统一的拼装和加载。
自动化指的是用很多工具来帮我们完成工作。
规范化指的是规范一些方式,减少后期维护工作:

  • 目录结构制定
  • 编码规范
  • 前后端接口规范
  • 文档规范
  • 代码模块化管理
  • ui组件管理
  • git分支管理
  • commit描述规范
  • 定期code review
  • 视觉图标icon规范
  • 服务部署
  • 打包规范
  • 框架使用管理

猜你喜欢

转载自blog.csdn.net/qq_26648427/article/details/82773354