1.1 什么是ECMA
ECMA(European Computer Manufacturers Association)中文名称为 欧洲计算机制造协会,这个组织的目标是评估,开发,和认可电信和计算机标准.1994年后该组织 改名为 Ecma国际.
1.2 什么是ECMAScript
ECMAScript 是 JavaScript语言的标准
1.3 为什么要学习ES6
- ES5语言的先天性不足。比如变量提升,内置对象的方法不灵活、模块化实现不完善等等
- 为了后面vue、react等框架学习做准备
- ES6是前端发展趋势,就业必备技能
2. ES6新特性
2.1 let关键字
let关键字 用来声明变量,使用let声明变量的特点:
1.不允许重复使用
2.{} 代表块级作用域,let有块级作用域,var只有函数作用域
3.没有域解析过程(既没有变量提升,var有变量提升)
2.2 const关键字
let关键字 用来声明变量,const声明有以下特点:
1.声明必须赋初始值
2.标识符一般为大写
3.不允许重复声明
4.值不允许修改
5.块儿级作用域
2.3 变量的解构赋值
ES6允许按照一定模式 从数组和对象中提取值,对变量进行赋值,这就被称为解构赋值.
2.3.1 数组的解构赋值
const arr = ['张学友','刘德华','黎明','郭富城'];
let[zhang,liu,li,guo]=arr;
console.log(li);
2.3.2 对象的解构赋值
const lin={
name:"林志颖",
age:23,
tags:['车手','歌手','小旋风','演员']
}
let{name,age,tags:[a1,a2,a3,a4]}=lin;
console.log(a3);
2.3.3 字符串的解构赋值
const[a,b,c,d,e]='hello'
console.log(a); //h
console.log(d); //l
2.3.4 复杂解构
let wangfei = {
name:"王菲",
age:19,
songs:['红豆','流年','暧昧','传奇'],
history:[{name:'窦唯'},{name:'李亚鹏'},{name:'谢霆锋'}]
}
let{name,age,songs:[a1,a2,a3,a4],history:[b1,b2,b3]}=wangfei;
console.log(age);//19
console.log(a2); //流年
console.log(b1.name); //窦唯
2.4 字符串的扩展
2.4.1 确定字符串包含关系方法includes(), startsWith(), endsWith()
js中只有 indexOf方法 ,可以用来确定 一个字符串中是否包含在另一个字符串中
ES6 又提供了三种新方法:
1.includes() : 返回布尔值,表示是否找到了参数字符串.
var s = 'hello world';
console.log(s.includes('l')); //true
2.startsWith() : 返回布尔值,表示 参数字符串是否在源字符串的头部
console.log(s.startsWith('h')); //true
console.log(s.startsWith('l')); //false
3. endWith() 返回布尔值 表示 参数字符串是否在源字符串的尾部
console.log(s.endsWith('l')); //false
console.log(s.endsWith('d')); // true
2.4.2 重复字符串方法repeat()
repeat() 方法 返回一个新字符串 表示 将原字符串 重复 n次
console.log('a'.repeat(5)); // aaaaa
- 如果参数是小数,会被向下取整
- 如果参数是负数或者Infinity,会报错
- 如果参数是0到-1之间的小数,则等同于0,因为先取整取到0
- 参数NaN等同于0
- 参数是字符串,则会先转换成数字
2.4.3 模板字符串
模板字符串 是增强型的字符串 用 反引号`` 表示 .特点:
1.字符串中可以出现 换行符
2.可以使用${xxx} 形式来输出变量