js------ES6 新增关键字 let const

92 阅读2分钟

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();