声明变量的方式
es6中新增两种变量方式let和const,与var最大的区别是有了块级作用与的概念,而且es6里会强制开启严格模式(use strict),变量未声明,不能引用。
- let
使用let注意以下几点
1、let不可以重复声明变量
2、let不允许提前声明
3、let存在块级作用域
function fn1(){
for(let i = 0;i<5;i++){
console.log(i); //打印0,1,2,3,4
}
console.log(i);// Uncaught ReferenceError: i is not defined 会报错,
因为let 声明的变量只在自己的块级作用域里有效
}
fn1();
- const
使用const注意几点:
1、const声明值类型(string,number,undefined,boolean)不可以修改;
2、const声明引用类型(object,function,null)可以修改;
3、const声明时必须赋值;
function fn2(){
//值类型
const pi = 123;
console.log(pi); //报错,Assignment to constant variable.
//引用类型
const k = {
a:1
}
console.log(const.b = 2) //可以改变引用类型
}
fn2();
解构赋值:是一个Javascript表达式,这使得可以将值从数组或属性从对象提取到不同的变量中。)
- 数组解构赋值
let [a,b] = [1,2];
console.log(a,b) //1,2
- 字符串解构赋值
let {length : len} = 'hello';
len // 5
- 布尔解构赋值
var o = {p: 42, q: true};
var {p, q} = o;
console.log(p); // 42
console.log(q); // true
- 数值解构赋值
var {wtf} = NaN;
console.log(wtf);
// undefined
- 对象解构赋值
({a, b} = {a:1, b:2});
console.log(a); // 1
console.log(b); // 2
- 函数参数解构赋值
function move({x, y} = { x: 0, y: 0 }) {
return [x, y];
}
console.log(move({x: 3, y: 8})); // [3, 8]
console.log(move({x: 3})); // [3, undefined]
console.log(move({})); // [undefined, undefined]
console.log(move()); // [0, 0]
字符串模板
//es5写法
var name = 'gongjialin';
var age = 20;
var reslut = "我的名字是"+name+"年龄是"+age;
console.log(reslut); //我的名字是gongjialin,年龄是20
es6写法
var name = 'gongjialin';
var reslut1 = `我的名字是${name}` ; //此时的${name}就是变量
console.log(reslut1); //我的名字是gongjialin
反引号中的字符串可以随意换行
反引号中可以随意插入变量的值和表达式
箭头函数
1、箭头函数可以简写到一个函数参数和一条语句
2、箭头函数的this被调用者的上一层对象
3、箭头函数没有arguments,可以用...rest参数替代
...
1、在函数中叫做rest参数,剩余的参数,全部放在最后,如果函数存在rest参数,必须放在最后面
2、在数组中叫做可扩展运算符,将数组展开