let、const ---es6新的变量修饰符

let  声明变量

特性:

1.不能先访问再声明 会报错 不会像var为undefined(不存在变量提升)

console.log(n) //报错 不可提前声明 没有隐式提升
let n = 20
console.log(n) //20
// var
console.log(n) //undefined
var n = 20

2.let所在的代码块会有隐式作用域

{
  var a = 20
  var b = 30
  let c = 40
  console.log(a, b, c) //20 30 40
} 
 console.log(a) //20
 console.log(c) //报错

3.同一个作用域出现同名变量名会报错(不能重复声明)

let a = 10
let a = 20
console.log(a)

const  声明常量

特性:

1.声明时必须初始化且只能初始化一次 

 //正确写法
const a=90 
//错误写法
const a
a=90

2.不能重新赋值

const a = 100
a = 200 //报错

3.暂时性死区

 //暂时性死区
var PI = "a"
if (true) {
 console.log(PI) //报错
 const PI = "3.14159"
} 
//const暂时把if当做一个作用域 封锁了 不能找到外面的PI

4.适用于不会变的业务中 其他同let

5.const 修饰obj对象可以添加成员 没改变obj对象

const obj = {}
obj.age = 20
console.log(obj)

练习:

<script>
//笔试题 严格模式相关  了解
 console.log(b)
 console.log(fn)
if (true) {
 var b = 100
 function fn() {}
} 
//尽量不要在if里面声明函数 要用就用let

总结:

  • var声明变量可以重复声明,而let不可以重复声明
  • var是不受限于块级的,而let是受限于块级
  • var会与window相映射(会挂一个属性),而let不与window相映射
  • var可以在声明的上面访问变量,而let有暂存死区,在声明的上面访问变量会报错
  • const声明之后必须赋值,否则会报错
  • const定义不可变的量,改变了就会报错
  • const和let一样不会与window相映射、支持块级作用域、在声明的上面访问变量会报错
  • let 和const 关键词声明的变量不具备变量提升(hoisting)特性
  • let 和 const 声明只在最靠近的一个块中(花括号内)有效
  • 当使用常量 const 声明时,使用大写变量,如:CAPITAL_CASING

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈哈ha~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值