1.var (1)var定义的变量在之后可以修改,如果不初始化会输出 undefined,不会报错。 (2)var定义的变量,可以跨块访问, 不能跨函数访问。 (3)var只有函数作用域,没有块级作用域。 (4)var的作用域是函数作用域,var可以用来声明全局变量,也可以声明局部变量。在一个函数内利用var声明一个变量,则这个变量只在这个函数内有效。     全局变量:在函数外定义的变量,作用域是整个代码文件。     局部变量:在函数内定义的变量,作用域是当前的函数内部。 (5)可以重复定义,后面的值会覆盖前面的。 2. let (1)let是块级作用域,函数内部使用let定义后,对函数外部无影响。 (2)不存在变量声明提前,否则会报错。 (3)let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。 (4)不能重复定义,否则会报错。 3. const (1)const定义的变量不可以修改,而且必须初始化。 (2)const一般用来声明常量,且声明的常量是不允许改变的,为只读属性,因此就要在声明的同时赋值。 (3)const与let一样,都是块级作用域,只能在块作用域里访问,存在暂时性死区,不存在变量声明提前,不允许重复定义。