ES6新特性

文章详细介绍了ES6的新特性,包括let与const变量、块级作用域、模板字符串、箭头函数、解构赋值、函数默认参数、面向对象的class和继承、Set与Map数据结构、Proxy和Reflect、Promise异步处理、Iterator遍历器以及模块化的概念和用法。
摘要由CSDN通过智能技术生成

ECMAScript简介

ECMA,电脑操作格式标准

ECMA-262

ES6,以ECMAJavascript2015作为标准。

ES6新特性

1.let与const变量以及块级作用域

解决var带来的变量声明提升的问题。

//let、const
//1.无变量提升console.log(x);
//var x=100;let x = 100;
console.log(x);
//2.支持块作用域
      //ES5仅支持全局、函数作用域
      //ES6新增块作用域,代码块{ },仅let、const支持,let和const不允许同作用域重复声明,不同作用域下可重复声明
      //   {
      //     let y=1000;
      //     console.log(y);
      //   }
      //   console.log(y);

      {
        let y = 1000;
        var z = 10;
        console.log(y);
        //let y="hello"; let和const不允许同作用域重复声明,不同作用域下可重复声明
        {
          //let y="inner"
            console.log(y * 2);
          console.log(z * 2);
        }
      }
      console.log(z);
      console.log(y);//报错
      

2.模板字符串

即插值字符串,通过模板拼接字符串。

//模板字符串
//使用字符串拼接实现数据描述
let name="xiaoming";
let age=20;
{
   let info=name+" is "+ age +" years old.";
   console.log(info);
}
 //使用模板字符串
 //${}插值运算符,尽量不要用耗时较长的函数 
{
  let info=`${name} is ${age} years old.`;//函数调用
  console.log(info);
}
//

3.解构赋值

使用解构从数组和对象中提取并赋值给独特的变量。

//解构赋值 
//分为数组、对象解构
//模式匹配
let student = {
        name: "小明",
        age: 20,
};
//      let stu_name = student.name;
//      let stu_age = student.age;
let { name: s_name, age: s_age } = student; //对象解构赋值
console.log(s_name, s_age);

let numbers = [22, 33, 44, 55];
//let a=numbers[0;]
let [a, b, c, d] = numbers; //数组解构赋值
console.log(a, b, c, d);

4.箭头函数

即使用Lambda表达式表示函数来代替匿名函数。

箭头函数没有上下文执行对象this

//箭头函数
//可以理解为一个语法简便的匿名函数
//函数声明语法
function f1(){
    return 10*n;
}
//函数表达式
let f2=function(n){
    return 10*n;
}
//箭头函数
let f3=(n)=>10*n;
let f4=(n)=>{
    return 10*n;
};

5.函数的默认参数

在声明函数时为参数赋予初值,从而使该参数具备了默认值。

6.面向对象的支持

通过class关键创建类,通过extends继承,通过super访问父类。

//class类
class Student{
    constructor(name,age){
        this.name=name;
        this.age=age;    
    }
    show (){
        console.log(`${this.name} is ${this.age} years old.`);
    }
}
let s1 = new Student("小明", 20);
s1.show();

7.对象字面量简写法

使用和所分配的变量名称相同的名称初始化对象时,如果属性名称和所分配的变量名称一样,则可以从对象属性中删除这些重复的变量名称。

//对象字面量简写法
//let x=20;
//let y=40;
let [x,y]=[20,40];
//let point={x:x, y: y};
let point={x,y};//变量名和属性名同名可以只写一个,定义的数组模型。

8.Symbol类型

提供了一种表示独一无二的值的方式,从而解决可以解决类似对象属性名称冲突的问题。

新数据结构--Set与Map

9.Set提供了一种类似于数组,但每个成员值都是唯一的。

Map提供了一种类似于对象的键值对集合,但键的类型不限于字符串,可以是各种类型的值。

10.Proxy(代理)

用于修改某些操作的默认行为,等同于在语言层面做出修改,属于一种“元编程(meta programming)”,即对编程语言进行编程。代理允许拦截在目标对象上的底层操作。

11.Reflect(反射)

给底层操作提供默认行为的方法的集合,这些操作是能够被代理重写的。反射和代理方法是一一对应的。

12.Promise

异步编程的一种解决方案。提供了一个容器,其中保存着某个未来才会结束的事件的结果。

13.Iterator(遍历器)与for…of循环

Iterator是一种接口,为各种不同的数据结构提供统一的访问机制。

for…of循环作为便利所有具有Iterator接口的数据结构的统一方法。

14.模块化

一个模块就是一个独立的文件,文件内部的所有变量,外部无法获取。

通过export规定模块对外的接口,通过import输入其他模块提供的功能。

兼容性

ES6是一次重大的版本升级。

由于ES6秉承着最大化兼容已有代码的设计理念,之前ES5甚至ES3编写的代码依然能正常运行。

ECMAScript是一门充满活力的语言,并在不断进化,未来版本的规范中将持续进行重要的技术改进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值