1.var::1没有块的概念,可以跨块访问,不能跨函数访问;
2.存在变量提升
2.let:1.let声明的的变量只在它所在的代码块有效;
2.不存在变量提升。let不会像var那样发生“变量提升”,因此,变量需要先声明后使用,否则报错
3.不允许重复声明。
3.const: 1.一旦声明就必须立即初始化;
2.一旦声明,常量值就不能改变(指堆内存中的地址不能改变)
3.其他和let一样
4.function():1.函数声明后不会立即执行,需要调用的时候才会执行;
2.对支持es5和es6浏览器环境在块作用域内有一定区别,所以应该避免在块作用域内声明函数。
5.class: 1.相比于对象原型的方式更清晰
2.更像面向对象编程的语法
6.import: 1.import命令接收一对大括号,其里面的变量名必须与被导入模块对外接口的名称相同
2.用as关键字可以将输入的变量名重命名
3.import命令输入的变零都是只读的
4.import命令具有提升效果,会提升到整个模块的头部,首先执行(因为Import命令是在编译阶段执行的,在代码运行之前)
5.import是静态执行,不能使用表达式和变量
6.import会执行所加载的模块