let关键字
1、变量无法重复声明
2、let是块级作用域,全局,函数,eval
var是全局,let只能在快级中有用
3、不存在变量提升(就是不允许在声明变量前使用)
4、不影响作用域链
声明常量
1、一定要给初始值
2、一般常量用大写
3、常量值无法修改
4、块级作用域
5、对数组和对象的元素修改不算做对常量的修改,不报错
变量解构赋值
解构赋值:允许按照一定模式从数组对象中提取值,对变量进行赋值
1、数组形式
const F4 = ['1','2','3','4']
let[a,b,c,d] = F4
2、对象的解构
const zhao = {
name : '张三',
age : 21,
pingjia:function(){
console.log("Helloween")
}
};
let {name,age,pingjia} = zhao
模板字符串
1、声明:let str = '123'
(这里123的引号为反引号)
2、内容中可直接出现换行符
3、变量拼接
let a = '张三'
let b = '${a},你好'
简化对象写法
允许在大括号里面,直接写入变量和函数,作为对象的属性和方法。
const school = {
name : '张三',
age : 21,
pingjia(){
console.log("Helloween")
}
}
箭头函数
ES6允许用箭头 =>
定义函数,let fn = ()=>{}
1、this是静态的,始终指向函数声明时所在作用域下的this值
2、不能作为构造函数实例化对象
3、不能使用 arguments
变量(arguments是保存实参的)
let fn = ()=>{
console.log(arguments)
}
fn(1,2,3)
//这样是错误的,因为不能使用 `arguments` 变量
4、箭头函数简写
1)、省略小括号(形参有且只有一个时)
2)、省略大括号(代码体有且只有一条语句时,return也必须省略)
5、箭头函数适合与this无关、定时器、数组的方法的回调
6、箭头函数不适合与this有关的回调、事件回调、对象的方法
ES6允许给函数形参赋初始值:1,形参初始值;2,与解构赋值结合
rest参数
引入rest参数,用于获取函数实参,用于代替arguments,有多个时,必须放在最后
function data(...args){
console.log(args)
}
data('1','2','3')//控制台直接输出数据数组
...
扩展运算符
能将数组转换为逗号分隔的参数序列
const f = ['1','2','3','45']
function kuozhan(){
console.log(arguments);
}
kuozhan(...f)
合并数组
const kuai = ['a','b']
const fen = ['1','2','3']
const su = kuai.concat(fen)
const su1 = [...kuai,...fen]
console.log('su:'+su)
console.log('su1:'+su1)
symbol基本使用
类似字符串的类型
1、symbol的值是唯一的,用于解决命名冲突问题
2、symbol的值不能与其他数据进行运算
2、不能用 for…in
遍历,但可以用 Reflect.ownkeys
来获取对象的键名
迭代器(Iterator)
类似一种接口,为不同的数据结构提供统一的访问机制,只要部署iterator接口,就可完成遍历操作。
1、ES6有一种新的遍历命令 for…of
循环,Iterator接口主要供 for…of
使用
2、原生具备Iterator接口的数据(可以用for…of
遍历)
Array、Arguments、Set、Map、String、TypeArray、NodeList
const school = ['张三','李四','王五','麻子']
//使用for…of遍历数组
for (let i of school) {
console.log(i)
}
let iterator = school[Symbol.iterator]();
//调用对象的方法
console.log(iterator.next())
console.log(iterator.next())
console.log(iterator.next())
console.log(iterator.next())
console.log(iterator.next())
console.log(iterator.next())