ECMAScript
1、ECMAScript5:脚本语言(不需要独立的编译器,通过浏览器加载运行,实现用户和页面的交互)
2、ECMAScript6:是JavaScript的下一代语法标准,于2015年6月发布。是JavaScript正式成为企业级的开发语言
ECMAScript6和JavaScript的关系:ECMA是一个语法规范,JavaScript是该语法规范的实现
ES6的基本语法
1、let 、const
(1)let:用来声明块级变量,var声明的变量会出现作用域的提升(会产生变量污染)
(2)const:声明的变量必须要初始化
const声明的对象:可以修改对象的属性值,但不能修改对象本身
Object.freeze:冻结对象 不能修改对象的属性值
hasOwnProperty()函数:判断key是否是对象的属性 若是返回true 若不是返回false
const p = {
name:'李四',
age:25,
family:{
father:'李世民',
mother:'长孙皇后'
}
}
function fun(obj){//函数的参数是一个对象
// 1、冻结对象 参数接收的对象
Object.freeze(obj);
// 2、使用for...in循环遍历对象的属性
for(let k in obj){
//hasOwnProperty()用来判断对是否包含给定的属性 typeof用来判断数据类型
if(obj.hasOwnProperty(k) && typeof obj[k]==='object'){
fun(obj[k]);
}
}
}
fun(p);
p.family.father = '李建成'
console.log(p);
临时死区:用let和const生成的变量会存放在临时死区中
作用:使用let声明的变量 const声明的常量的作用域不会被提升
2、在循环当中使用var
let arr = [];
for(let i = 0;i<5;i++){ //var定义的i是全局的 若将var改为let输出 则输出0 1 2 3 4
arr.push(function(){ //arr是一个函数数组:数组中的每个单元都是函数
console.log(i);
})
}
arr.forEach(function(item){ //item是函数:
item();
})
3、解构赋值 Rest运算符 ‘...’
(1)当迭代器使用:会按顺序遍历容器中的元素
(2)替代函数的内置属性arguments
(3)通过解构赋值可以简化变量的赋值
(4)通过‘...’把特定的元素放在变量中
(5)通过解构来交换变量的值 注:必须要用;结尾
4、对象的解构
解构单层对象
解构多层对象
解构时可以给变量取别名
5、模板字符串
使用反引号``和${变量名}将常量和变量写在一个串里面
6、Symbol类型
(1)ES5 7种数据类型
(2)ES6新增的Symbol:表示一个唯一的值
1、直接创建:let 变量名=symbol
2、间接创建:传字符串 let 变量名 = Symbol(字符串)