一、ES6新增的变量的定义
let const 关键词定义变量
1、let定义变量:
特点:
  A、不会进行预解析,结果会报错
  B、与forEach()中的变量类似,每次执行都会定义一个互相之间不影响的新变量
  C、不能重复定义变量名称,一个变量名称只能定义一次
  D、定义的变量如果在{}中,则只能在{}中被执行调用,其他位置都不可以。所以在不同{}中,定义的变量名称是可以重复之用的
  E、在循环中最好只用let定义
2、const定义变量:
特点:
  A、在js中,const定义的变量成为常量,不能被重复赋值,数据已经定义,不能修改
  B、const也是定义在{}中,不能在{}外调用
  C、const定义的是对象、数组、函数、引用数据类型。其中只要引用数据类型的地址没变化,就可以改变引用数据类型中的单元存储的数据
  D、const可以预解析,结果为undefined

3、内外部调用演示示例:

//每次循环都是独立的,互不影响i变量存储对应的数值
var oLis = document.querySelectorAll('li');
for(let i = 0; i <= oLis.length - 1; i++){
    oLis[i].onclick = function(){
    //在内部调用是没有问题的
    console.log(i+1)
    }
}
//如果在外面调用let定义的变量,则会报错
console.log(i)

4、分别使用var、let、const重复赋值做对比

  A、使用var声明变量

//使用var声明变量
var int1 = 100;
var int1 = 200;
//结果为200,重复复置会覆盖之前的
console.log(int1);

  B、使用let声明变量

//使用let声明变量
let int2 = 300;
let int2 = 400;
//因为同一个变量,两次用let声明,所以会报错
console.log(int2);

  C、使用const声明变量

//使用const声明变量
const int3 = 500;
const int3 = 600;
//因为同一个变量,两次用const声明,所以会报错
console.log(int3);

5、特殊用法:
A、let虽然不能在{}外面调用,但可以在直接调用函数

function fun2(){
    let str = '上海';
    return str;
}
//调用函数,即可输出结果为‘上海’
console.log(fun2());

B、const虽然一旦赋值,就不能改变。但可以修改数组、对象中存储的数据

//修改数组数据,但不修改数组
const arr = [1,2,3,4,5];
arr[0] = '北京'
//输出[北京,2,3,4,5];
console.log(arr);
//修改对象数据,但不修改对象
const obj = {name:'张三'};
obj.name = '李四';
//输出{name:李四}
console.log(obj)

二、箭头函数:函数的另外一种写法
1、普通函数:

fun1 = function(){
    函数
}

2、箭头函数:

fun2 = ()=>{}

3、特点
  A、与普通函数执行效果完全相同
  B、将函数主题function()换成了()=>
  C、如果只有一个参数,可以不写(),例如:e=>{console.log(e);}
  D、如果只有一行代码,可以不写{},例如:e=>console.log(e)

A True Master Is An Eternal Student(真正的大师总是怀着一颗学徒的心) ------(Master Yi)