美文网首页Web前端之路
【小结】【JavaScript】var、let和const

【小结】【JavaScript】var、let和const

作者: 音无级鹦鹉螺号szhiku | 来源:发表于2019-07-10 10:10 被阅读2次

var 相当于在整个函数中添加了全局变量,容易污染全局作用域,因此在实际运用中很少使用let

let与块级作用域

let 声明变量形式的特点:

  • let声明的变量只在当前作用域有效
  • let声明的变量不能被重复声明
  • 不存在变量的提升(不能先使用再声明)
  • 使用let或者const声明的变量不能被重新声明或赋值
  • 存在暂存死区,查找变量时只在当前作用域查找

作用域相关:
ES6之前的作用域有:全局作用域、函数作用域、eval作用域
现在常见的主要有:
块级作用域:简单的来说就是{...}
如:if(){}
块级作用域可以嵌套
如:if(){
if(){}
}
注意:声明对象或者对象字面量的时候的{}不算做块级作用域,如var obj = { a:0 }

const

  • 用于声明常量,声明的同时必须赋值
  • let存在的特点con都有(不能重复声明、不存在变量提升、只在当前(块级)作用域内有效)
  • 当常量为引用类型的时候,可以被修改,如对象、数组
    如声明一个const类型的常量作为一个对象,对象内的值可以被修改,但是无法再被声明成新的对象
const xiaoming = {
  age: 14,
  name: '小明'
};
console.log(xiaoming);
xiaoming.age = 22;
console.log(xiaoming);
xiaoming = {};//报错

怎么防止常量为引用类型的时候能被修改的情况?
在定义好的const后使用Object.freeze()方法

const xiaoming = {
  age: 14,
  name: '小明'
};
Object.freeze(xiaoming);

相关文章

网友评论

    本文标题:【小结】【JavaScript】var、let和const

    本文链接:https://www.haomeiwen.com/subject/ttwqkctx.html