js 谈谈前端需要掌握的es6内容

简介: js 谈谈前端需要掌握的es6内容

目录

块级作用域


es6之前声明变量时只有var了,我们都知道它存在变量提升这种麻烦的问题。

于是es6多出了两个块级作用域:const与let。

const定义常量,常量不可重新赋值,一般只用于读取不用于修改时使用:

  const a = 1
  a = 2//错误,不可重新赋值

但是要清楚只是栈内存不可变,堆内存可以进行修改,也就是const声明的数组和和对象还是可以随意添加内容或删除内容的:

  const arr = []
  arr = [1]//错误,不可重复赋值
  arr.push(1)//正确
  const obj = {}
  obj = { name: 'name' }//错误,不可重复赋值
  obj.name = 'name'//正确

let声明可变量:

  let a = 1;
  a = 2

只在块级中有作用:

  {
    let a = 1
    const b = 2
    console.log(a, b)//1 2
  }
  console.log(a)//错误,提示你没有声明
  console.log(b)//错误,提示你没有声明

声明时应优先使用const,其余的也就是非常量都使用let即可。

箭头函数


这是个普通函数,参数是state,返回值是res:

function(state){
  return res 
}

写成es6的箭头函数就是以下形式:

(state) => { return res }

然后如果后面的内容打算直接返回的话可以直接去掉花括号{},或者使用括号():

(state) => res
//或
(state) => ( res )

然后如果这里的返回值res也是个箭头函数那你就可以写成:

(state) => () => { return... }
//或
(state) => ( () => { return... } )

单一参数的话,前面的括号()也可省略,多参数必须保留:

state => { return res }
(state1, state2) => { return res }

声明函数名一般用变量接收:

const funName = () => {};
funName();

多用于回调中需要声明匿名函数时

如map函数:

arr.map((item) => {})

如setTimeOut:

setTimeOut(() => {}, 1000);

函数默认参数、剩余参数


默认参数就是函数在没有得到入参时可以使用默认参数

  const fun = (param = 1) => {
    console.log(param)//1
  }
  fun()

剩余参数可以将未声明参数的部分全部合在一起成一个数组:

  const fun = (param, ...other) => {
    console.log(param, other)//1 [2,3,4]
  }
  fun(1, 2, 3, 4)

解构赋值


从数组或者对象中将栈内存取出进行使用。

一般都是只进行使用不进行修改,所以解构一般都用const声明。

在对象中解构时声明的名称与key一一对应:

  const obj = {
    name: 'name',
    age: 18
  }
  const { name, age } = obj
  console.log(name, age)//name 18

在数组中按照位置对应,声明名称可以随意:

  const arr = ['name', 18]
  const { a, b } = arr
  console.log(a, b)//name 18

在对象解构时重命名变量:

  const obj = {
    name: 'name',
    age: 18
  }
  const { name: newName, age } = obj
  console.log(newName, age)//name 18

嵌套解构

  const obj = {
    name: 'name',
    age: 18,
    info: {
      address: '北京'
    }
  }
  const { name, age, info: { address } } = obj
  console.log(name, age, address)//name 18 北京

对象属性简写


当变量作为对象的value值时,如果变量与key的名字一样可以简写:

  const name = '名字'
  const obj = {
    name: name
  }
  const obj2 = {
    name //简写
  }
  console.log(obj, obj2)//{name: '名字'} {name: '名字'}

对象展开运算符


类似函数剩余参数:

  const obj = {
    name: 'name',
    age: 18,
    address: '北京'
  }
  const { ...all } = obj
  const { name, ...other } = obj
  console.log(all, other)//{name: 'name', age: 18, address: '北京'} {age: 18, address: '北京'}

在react组件传值时可以使用到,比如需要把一整个对象的属性都传入:

  const obj = {
    name: 'name',
    age: 18,
    address: '北京'
  }
  const { ...all } = obj
  <Component ...all><Component>

模板字符串


字符串中需要添加变量时用于代替+号连接的方案。

  const id = 123
  const mes = 'id是' + id//旧方案
  const mes2 = `id是${id}`//模板字符串
  console.log(mes, mes2)//id是123 id是123

Symbol


ES6 数据类型除了 Number 、 String 、 Boolean 、 Object、 null 和 undefined ,还新增了 Symbol。

这个数据类型表示一个独一无二的值,虽然值都是one但是它们就是不同的:

  const test = Symbol('one')
  const test2 = Symbol('one')
  console.log(test, test2) //Symbol(one) Symbol(one)
  console.log(test === test2) //false

一般用于防止对象属性重复,全局下即便你不知道会有什么属性,只要是Symbol类型就不会重复,很神奇的发现对象可以存在长的一样的键值,却不是真的一样:

  const test = Symbol('one')
  const test2 = Symbol('one')
  const obj = {
    [test]: 1,
    [test2]: 1,
  }
  console.log(obj)//{Symbol(one): 1, Symbol(one): 1}

Promise和async/await



这个还是很重要的,我专门写了一篇使用方法:js Promise与async/await用法详解




es6推出了类的概念,让对象原型的写法更加清晰、更像面向对象编程。


其实我觉得除了react类式组件,其余时候比较很少接触类这个概念,但是内容却并不少,如果有需要我可以单独写一篇介绍。


语法糖,本质是函数,我们应该先了解js原型链的存在以及js继承方法的一步步更替。


可以先学习原型链:js 原型链详解。

再学习js的所有继承方法:js 7种继承方式详解


在继承方法最后一部分内容简单提到了类。


相关文章
|
8月前
|
JavaScript 前端开发 API
|
8月前
|
前端开发 JavaScript 数据可视化
58K star!这个让网页动起来的JS库,前端工程师直呼真香!
Anime.js 是一款轻量级但功能强大的JavaScript动画引擎,它能够以最简单的方式为网页元素添加令人惊艳的动效。这个项目在GitHub上已经获得58,000+星标,被广泛应用于电商页面、数据可视化、游戏开发等场景。
293 8
|
8月前
|
JavaScript 前端开发 容器
|
8月前
|
JavaScript 前端开发
|
8月前
|
存储 JavaScript 前端开发
|
8月前
|
移动开发 JavaScript 前端开发
|
8月前
|
存储 JavaScript 前端开发
|
8月前
|
JavaScript 前端开发
|
8月前
|
存储 JavaScript 前端开发
|
8月前
|
JavaScript 前端开发 开发者

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    522
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    196
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    192
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    147
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    252
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    366
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    160
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    96
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    166
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    229