var
在ES5阶段中,使用var具有以下特点:
(1)没有块的概念,可以跨块访问,不能夸
函数访问;
(2)存在变量提升,赋值不提升 (undefined)
let
在ES6阶段新增,新增出块的概念,新增块级作用域,具有以下特点:
(1)let声明的变量只在它所在的
代码块有效;
(2)let不会出现变量提升,需先声明后使用,否则会报错;
(3)暂存性死区,在
代码块内,使用let使用变量之前,该变量都是不可用的;
(4)不允许重复声明
const
用于声明
一个只读的常量,具有以下特点:
(1)一旦声明就必须立即初始化;
(2)一旦声明,常量值就不能改变(指的是内存地址不能改变,但指向的数据结构不受控制;通过 Object.freeze()
方法,使对象的原始
属性不可变, 但仍然可以更改嵌套对象);
(3)块作用域内有效;
(4)不存在变量提升;
(5)存在暂时性死区;
function
用于定义
一个函数,具有以下特点:
(1)
函数声明后 需要
调用的时候 才能执行;
(2)对
支持ES5和ES6的浏览器环境在块作用域内有一定区别,所以应避免在块级作用域内声明
函数。
class
ES6引入了class关键字,用来定义类。该写法相比于对象原型的 方式具有以下特点:
(1)相比于对象原型的方式写法更清晰;
(2)更像面向对象编程的语法(方便)
```JavaScript
class Cal
culate {
constructor(x, y) {
this.x = x;
this.y = y;
}
add() {
return this.x + this.y;
}
}
```
import
用于加载模块,然后
输出变量,具有以下特点:
(1)import 命令接受一对大括号,其里面的变量名必须与被导入的模块对外接口的
名称相同;
(2)用 as 关键字可将输入的变量名
重命名;
(3)import 命令输入的变量都是只读的;
(4)import 命令具有提升
效果,会提升到整个模块的头部,首先执行(因为import命令实在编译阶段执行的,在
代码运行之前);
(5)import 是静态执行,不能使用表达式和变量;
(6)import 会执行所加载的模块
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。