1.CONST
申明常量 不可更改
不属于顶层对象
var str=1window.strconst strwindow.str//undefined
不存在变量晋升
console.log(str)var str='es6'不报错 undefinedconsole.log(str)const str='es6'报错 //暂时性死区if(){console.log(str)var str='es6'//大括号中报错}//块级作用域大括号为块级作用域if(){const str='es6'}console.log(str)//报错
根本数据类型会存在栈内存(stack)
援用:堆内存(heap)栈内存中存的是援用地址 所以地址无变动数值是能够扭转的
Object.freeze(援用类型) 不可改 不过只能解冻第一层
如果每一层都解冻要递归
function myFreeze(obj){Object.freeze(obj);Object.keys(obj).forEach(function(key)){if(typeof obj[key]==='object'){myFreeze(obj[key])}}}
2箭头函数
const sum3=(x,y)=>{
return x+y;
}
const sum3=(x,y)=>x+y(只有一个参数小括号也能够不写)
箭头函数内没有this 指向下层作用域 没有就是window
箭头函数取不到 arguments
不能是用箭头函数作为构造函数
3模板字符串
``反引号
console.log(我要学习${this.name}
)变量用${}来取
4解构赋值
const course={name:'es6',price:'500'}const{name,price}=courseconsole.log(name,price)const [a,b,c]=courseArr
重名问题:
const{name:cname,//别名price,teacher:{name,age}}console.log(cname,name)
用法
const sum=([a,b,c])=>{console.log(a+b+c)}sum([1,2,3])const foo=({name,age,sc='111'})=>{}解构设置默认值 传了依照传值走
函数返回值也能够构造 return
const {name,age}=foo();JSON字符串JSON.parse(a)
5ES6不能被所有浏览器辨认怎么办(装置babel)
npm install --save-dev babel-preset-env babel-cli-D=--save
配置文件:
.babelrc
http://es.xiecheng.live/