let const

  • 原来的var声明标识符:可以重复声明,编译不报错.
  • let,const声明标识符:不能重复声明,再声明编译报错.
  • var声明的标识符作用域是当前函数,let和const是当前{块}.
  • const声明的标识符不能再被赋值,也就是常量.

解构赋值

ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构.

本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。

具体语法简单而繁杂就不一一赘述了,重点记一下用途吧.以后碰到记得用

交换变量的值

let x = 1
let y = 2
[x,y] = [y,x]

从函数返回多个值

//返回一个数组
function 函数(){
return [1,2,3]
}
let [x,y,z] = 函数()
//返回一个对象
function 函数(){
return {
属性一的标识符:1,
属性二的标识符:2
}
}
let [属性一的标识符,属性二的标识符] = 函数()

函数参数的定义

//参数是一组有次序的值
function 函数([x,y,z]){...}
函数([1,2,3])
//函数是一组无序的值
function 函数({x,y,z}){...}
函数({z:3,y:2,x:1})

提取JSON数据

let jsonData = {id:42,status:"OK",data:[867,5309]}
let {id,status,data:number} = jsonData
//number === [867,5309]

函数参数的默认值

jQuery.ajax = function (url, {
async = true,
beforeSend = function () {},
cache = true,
complete = function () {},
crossDomain = false,
global = true,
// ... more config
} = {}) {
// ... do stuff
};

输入模块指定方法

const {sin,cos} = Math
const {函数名,函数名} = require('模块')

遍历map结构

...

函数的扩展

  1. 可以指定默认值
//解构赋值的默认值和参数默认值结合
function 函数(url,{body = '',method = 'GET'} = {}){...}
function 函数(url,{body ,method } = {body = '',method = 'GET'}){...}//这个有问题,注意和上一个的区别
  1. rest参数
functio 函数(...参数组){
console.log(typeof 参数组)//数组
}
  • rest参数只能放到最后,否则报错
  • 函数的length不包括rest参数
  • 可以代替arguments使用,arguments不是数组有时候不方便.
  1. 尾调用优化,尾递归优化

    ...

扩展运算符和剩余参数

上代码:

复制数组和对象

let 数组1 = ['苹果','橘子','香蕉']
let 数组2 = [...数组1]
console.log(数组1 === 数组2)//false
let 对象1 = {name:'李华',age:'12'}
let 对象2 = {...对象1}

数组去重

let 数组1 = ['苹果','橘子','香蕉','苹果']
let 数组2 = [...new Set(数组1)]

合并数组

let 数组1 = ['西瓜','苹果']
let 数组2 = ['桃','香瓜','橘子']
let 数组3 = [...数组1,...数组2]//[ '西瓜', '苹果', '桃', '香瓜', '橘子' ]
let 数组4 = [...数组2,...数组1]//[ '桃', '香瓜', '橘子', '西瓜', '苹果' ]
console.log(数组3)
let 对象1 = {name='李华',age='13'}
let 对象2 = {爱好:'学习'}
let 对象3 = {...对象1,...对象2}
let 对象4 = {...对象1,...对象2,...{name:'小明'}}//{ name: '小明', age: '13', '爱好': '学习' }相同的键名会导致后面的覆盖前面的

调用函数时

let 函数 = (x,y,z)=>{console.log(x,y,z)}
let 数组 = [1,2,3]
函数(...数组)//把数组展开传参

函数声明时形参前加上...

let 函数 = function(...参数){
console.log(typeof 参数)
}
函数(1,2,3,4)//数组[1,2,3,4]
不过只能写在最后
这种情况叫剩余参数rest,其实就是将此处开始的参数转换成一个数组。
function fn(x,y,z){
let arg = [...arguments]
}

将伪数组转换成数组

[...document.querySelectorAll('div')]
[...'你好小伙砸']

Symbol

  1. Symbol表示独一无二的值,是第七种基本数据类型
let s = Symbol('描述字符串')//这里的描述字符串不影响Symbol,只是方便开发.
let ss = Symbol.for('全局Symbol的key,也作为对其的描述')//创建全局Symbol console.log(Symbol.for('用户1') === Symbol.for('用户1'))//true
//先在全局Symbol注册表中查找key为'用户1'的Symbol,如果找到就反回这个Symbol,否则就创建一个全局Symbol
  1. Symbol的使用

    ...略

Set(集合)和Map(字典)数据结构

  1. 是一组键值对的结构,具有极快的查找速度.

    js中对象的数据结构也是字典,只不过对象的key必须是字符串或symbol,map的key可以是任意类型

    字典的key不能重复,如果重复放入key相同的键值对,会覆盖原来的value
let 字典 = new Map()//可以传入二维数组
字典.set('吃','eat')
字典.has('吃')
字典.delete('吃')
  1. Set对象是map键的集合,你可以按照插入的顺序迭代它的元素(好像和Python里的不一样),Set中的元素是唯一的.

...API略

异步编程

略.

class

语法糖,还是基于原型链,搞清楚prototype和__proto__就可以了

Promise

见下章...

最新文章

  1. SQLServer 2016安装时的错误:Polybase要求安装Oracle JRE 7更新51或更高版本
  2. android手机和ios手机的分辨率
  3. ubuntu 13.10 svn工具 rabbitvcs 安装
  4. Oracle date 和 timestamp 区别
  5. Oracle connect by 树查询之三(超详细)
  6. 自己常用的8个Web在线工具
  7. hdu 4812 D Tree(树的点分治)
  8. ——————————JavaScript中,对String字符串的一些操作——————————
  9. redis centos启动
  10. 微信语音红包小程序开发如何提高精准度 红包小程序语音识别精准度 微信小程序红包开发语音红包
  11. QT中的相对位置,绝对位置之间的转换(maptoglobal,mapfromglobal)
  12. 前端笔记之CSS(上)
  13. 数据库原理 - 序列7 - Binlog与主从复制
  14. ef 增加或者更新的习惯思维
  15. Python字符串列表元祖字典的公共方法
  16. linux 操作 mysql 指定端口登录 以及启动 停止
  17. Android基础知识之屏幕兼容模式
  18. CentOS6.8下安装MySQL5.6
  19. Oracal 11 g 数据库安装
  20. Git在windows环境下的使用教程

热门文章

  1. Nodejs在VSCode下代码智能提示
  2. 自动化测试之Selenium篇(一):环境搭建
  3. php数据映射到echarts中国地图
  4. Linux C 获取本机所有网卡的 IP,Mask
  5. 百度开源插件echarts介绍及如何使用
  6. Torrent文件的解析与转换
  7. ubuntu mplayer "无法打开 VDPAU backend libvdpau ..."
  8. JSON小结【json-lib】
  9. Socket 结构体
  10. windows下命令行设置静态IP