1、let关键字
let关键字用于声明变量,特点如下
- 不允许重复声明
- 块级作用域
- 不存变量提升
- 不影响作用域链
应用场景:声明变量使用let就可以
2、const关键字
const关键字用来声明常量,特点如下
- 声明必须赋初始值
- 标识符一般为大写
- 不允许重复声明
- 值不允许修改
- 块级作用域
对象属性修改和数组元素变化不会触发const错误
应用场景: 声明对象类型使用const 非对象类型使用let
3、变量的解构赋值
ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构赋值
数组的解构赋值
const arr = ['red','green','blue']
let [r,g,b]=arr
对象的解构赋值
const obj = {
name: '张三',
age: 30
}
let {name, age} = obj
应用场景: 频繁使用对象方法、数组元素、就可以使用解构赋值形式
4、模板字符串
模板字符串(template string) 用反引号`标识 特点如下
- 字符串中可以出现换行符
- 可以使用${xxx}形式输出变量,似el表达式
应用场景:当遇到字符串与变量拼接的情况使用模板字符串
let name = 'zs'
let ul = `
<li>香蕉</li>
<li>苹果</li>
<li>西瓜</li>
`
5、箭头函数
ES6允许使用箭头=>定义函数
- function写法
function fn(param1, param2, ..., paramN){
//函数体
return expression;
}
- =>写法
let fn = (param1, param2, ...,paramN){
//函数体
return expression;
}
注意
- 如果形参只有一个,小括号可以省略
- 如果函数体只有一条语句,花括号可以省略,函数的返回值为该条语句的执行结果,如果是return语句,return必须省略
- 箭头函数this是静态的,始终指向声明时所在的作用域下的this的值
- 箭头函数不能作为构造函数实例化
- 不能使用arguments
//省略小括号
let fn1 = n =>{
return n*n;
}
//省略花括号
let fn2 = (a+b) => a+b;
箭头函数this始终指向声明时所在作用域下this的值,call等方法无法改变其指向
let obj = {
name:'jack',
age:20
};
let foo = ()=>{
console.log(this);
}
let bar = function(){
console.log(this);
}
//call对箭头函数无效
foo.call(obj)//Window
bar.call(obj)//obj
6、函数参数默认值设定
ES6允许给函数参数设置默认值,当调用函数时不给实参,则使用参数默认值具有默认值的形参,一般要靠后
let add = (x, y, z=3)=>x+y+z;
console.log(add(1,2));//6
7、rest参数
ES6引入rest参数,用于获取函数的实参,用来代替arguments,作用与arguments类似,将接收的参数序列转换为一个数组对象
语法格式:fn(a, b, ...args),写在参数最后面
let fn = (a, b, ...args) => {
console.log(a);
console.log(b);
console.log(args);
}
fn(1,2,3,4,5,6) //1 2 Array(4)
8、Symbol
JS七种基本数据类型
- 值类型(基本类型): string、number、boolean、undefined、null、symbol
- 引用数据类型:object(包括array 、 function) ES6引入了一种新的原始数据类型symbol, 表示独一无二的值。它是js第7种数据类型,是一种类似于字符串的数据类型
Symbol特别
- 值是唯一的,用来解决全名冲突
- 值不能与其他数据进行运算
- 定义的对象属性不能用for...in循环遍历,但是可以使用Reflect.ownKeys来获取对象的所有键名