1.新增的用于变量声明的关键字let和const
1.let与var都是关键字的声明,let声明的变量具有会计作用域,但是var没有。let没有变量的提升,var有。
2.const声明的是常亮,不是变量,常亮不允许被修改,声明的时候,是什么就是什么。具有块级作用域。声明变量时,必须赋值。
var | let |
---|---|
函数作用域 | 块级作用域 |
变量提升 | 不存在变量提升 |
值可更改 | 值可更改 |
{
let a=10;
var b=20;
}
console.log(a); //ReferenceError:a is not defined.
console.log(b); //20
const i=5;
i=25;
console.log(i);
//TypeError: Assignment to constant variable. 赋值给常量变量
2.新增的箭头函数
箭头函数,其实只是一种函数的语法,
1.不允许直接存在,必须作为值存在
2.在箭头函数没有自己的this,使用的是外层函数的this
3.箭头函数内部没有arguments
写法:
var fn = ()=>{
console.log("hello");
};
//等同于
var fn=function(){
console.log("hello");
}
在箭头函数没有自己的this,使用的是外层函数的this (牢记)
let obj = {
fn:function(){
console.log(this); //Object
},
fun:()=>{
console.log(this);//Window 注意此时是箭头函数不指向Object
},
name:"admin"
}
obj.fn();
obj.fun();
4.新增的字符串的拼接
以前的双引号,单引号都不支持字符串换行非常的麻烦。ES6新增语法反引号``就解决了不能换行问题,通过${}拼接变量
举例:
let str2 = `h
e
l
l
"o"
'w'
o
r
l
d`;
console.log(str2);
3.新增的展开运算符
写法:…
注意:展开运算符必须是同类型的
let arr = [4,5,6,7,8];
console.log(...arr);
//4
//5
//6
//7
//8