ES6简介

ES6是ECMAScript 6.0的简称,是javascript语言的下一代规范,曾经在2015年6月正式公布上线。目标就是为了对立javascript的语法规范,能够用来开发大型应用程序,称为企业级开发语言。

ES6与JavaScript的关系:
ES6是JavaScript的标准规范,JavaScript是ES6的一种实现。

变量/赋值

块级作用域{}
ES5中作用域有:全局作用域、函数作用域,没有块作用域的概念。ES6新增了块级作用域,块作用域由{}包含,if语句外面的{}也属于块级作用域。

//通过定义的变量能够跨块作用域拜访到{  var a = 12;  console.log("a",a)}console.log("a",a)
//通过var定义的变量不能通过跨函数作用域拜访到(function(){  var b = 5;})()console.log("b",b) // not defined

var 与 let 和 const 区别:

类型定义变量类型作用域
var能够反复定义是变量,不能限度批改没有块级作用域
let不能反复定义是变量块级作用域,不能跨块拜访
const不能反复定义是常量,初始化时必须赋值块级作用域,不能跨块拜访

const定义的对象属性是否能够扭转?

实例1:批改对象的属性值。

const per = {  name:'倩倩'}per.name = "我是嘻哈"console.log("per.name",per.name) //打印出我是嘻哈

通过上个实例,咱们发现对象的属性是能够批改的,这是什么起因呢?

对象是援用类型的,per中保留的仅是对象的指针,意味着指针不会产生扭转,批改对象的属性不会扭转对象的指针,所以是容许批改的。

赋值:新增解构赋值,就是对数据拆解并赋值。解构赋值的两个规定:

  • 左右两边模式必须统一
  • 必须让定义和赋值同步实现。

实例2:正确的构造赋值

let [a,b,c] = [1,2,3]console.log("a",a)//1console.log("b",b)//2console.log("c",c)//3

实例3:左右两边模式统一,数据长短不同时

let [bar, foo] = [1];console.log("bar",bar)//1console.log("foo",foo) // undefined

上述解构不胜利,变量值等于undefined。

留神:对象也是能够解构的,然而须要留神的是对象和数组的解构有很大的区别,对象的属性没有秩序,变量必须与属性同名,能力取到正确的值。

实例4:对象的解构赋值

let { bar,foo } = {  foo:'aaa',  bar:'bbb'}console.log('bar',bar)console.log('foo',foo)console.log('baz',baz) // not defined