ES和js的关系:
Javascript 包含三部分:ECMAScript(核心), Dom(文档对象模型), Bom(浏览器对象模型)。
ES作为核心,它规定了语言的组成部分:语法、类型、语句、关键字、保留字、操作符、对象;
DOM把整个页面映射为一个多层节点的结果,开发人员可借助DOM提供的API,轻松地删除、添加、替换或修改任何节点。
BOM支持可以访问和操作浏览器窗口的浏览器对象模型,开发人员可以控制浏览器显示的页面以外的部分。
let & const:
使用let
声明的变量可以重新赋值,但是不能在同一作用域内重新声明
使用const
声明的变量必须赋值初始化,但是不能在同一作用域内重新声明也无法重新赋值(可以修改声明对象的内部属性).
let const 也存在变量提升,只不过由于暂时死区的限制,你不能在 let/const x 之前使用 x;
x = 'hl'; (() => { console.log(x); //x is not defined let x = 'zpy'; })()
字符串模板:
ES6中允许使用反引号 `` 来创建字符串,``可以包含由美元符号加花括号包裹的变量 `${变量}`
let a = 'boy'; let b = `this is a ${a}, good &{a}`; console.log(b) // this is a boy, good boy
解构赋值:
ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring).
// 之前的赋值 var a = 1, b =2, c = 3;
// 简单的结构赋值 var [a, b, c] = [1, 2, 3];
数组结构赋值
// 多维数组的结构赋值 var [a, [b], [[c]]]] = ['h',['l'], [['z']]]; console.log(a,b,c) // 'h' 'l' 'z' //默认值,只有当右边对应位置为undefined时候才会选择默认(null不属于undefined) var [a = 1, b = 2, c] = ['undefined', null, '3']; console.log(a,b,c) // '1' 'null' '3' var [a, b, c] = [1, 2]; console.log(a,b,c) // 1 2 undefined var [a, b] = [1, 2, 3]; console.log(a,b) // 1 2
对象结构赋值
var {name, age} = { name: "hl", age:26 }; console.log(name, age) // 'hl' 26 var {id: personId, name = 'zpy', age} = { name: "hl", age:26, id:007 }; console.log(personId, name, age) //7 'hl' 26
字符串结构赋值
var [a, b, c] = 'this'; console.log(a, b, c);// 't' 'h' 'i' var {length: len} = 'this'; console.log(len) // 4