let const 是ES6新增关键字 用于声明变量
- let 用于声明普通变量
- const 声明常量
let const 和 var 的区别
- let const 不存在变量提升 只能定义后使用
- const 声明常量后 值不能修改
- let const 不能重复声明变量(重复声明 var 和function声明的也不行) 报错:n has already been declared var重复声明变量时 变量值 是最后一次声明的赋值 function 和 var 声明的变量名相同时 应该先执行函数声明的变量 再执行 var 声明的变量
- let const 在全局声明的变量或常量 不会在全局属性window 上添加属性
- let const 在代码块中出现时 会形成块级作用域 并出现暂时性死区
- if(condition){ 条件的花括号中使用let const就会形成块级作用域 }
- for(...){ for循环中代码块 }
- 利用{}形成块级作用域
暂时性死区(TDZ: temporary dead zone)
代码块中 用 let const 命令声明的变量之前 该变量都是不可用的 语法上称为暂时性死区
- 本质就是 只要一进入当前作用域 所使用的的变量都已经存在了 但是不可获取 只有等到声明变量的那一行代码出现时 才会获取和使用该变量
const 声明变量的细节
- const 声明时 必须赋值
- 值一旦被定义 就不能被修改
- 若const 声明的变量是一个引用类型 那么常量代表的引用地址不能改变 但是堆内存中的内容是可以修改的
ES6 中声明一个类 用class
class A{
constructor(name,age,sex){
this.name = name
this.age = age
this.sex = sex
}
//添加公有属性
learn(){
console.log(this.name + this.age + this.sex)
}
//添加静态方法
static motor = '努力学习'
static get(){
console.log('aaaa');
}
}
let a = new A('zhangsan',12,'boy');
a.learn();
A.get();