ES6新特性

72 阅读3分钟

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来获取对象的所有键名