Varible

2019-11-05  本文已影响0人  zdxhxh

一、变量

关键字 特点
var 1. 可以重复声明
2. 无法限制修改
3. 没有块级作用域
4. 变量提升
let 1. 不能重复声明
2. 可以修改
3. 不存在变量提升
const 1. 不能重复声明
2. 不存在变量提升

暂时性死区

let/const声明的变量,这个区块{}会形成封闭的作用域

在这个作用域内,在let/const关键字之前使用这些变量,就会报错

TDZ暂时性死区就是指 : let/const关键字之前的代码块

// TDZ start 
typeof tep  // Reference Error
// TDZ end 
let tep = ''

但神奇的是,如果对未使用的变量使用typeof ,反而不会报错

函数式死区

有些死区非常隐蔽,可能面试会搞你

function bar(a=b,b=3){ 
  return [a,b]
}
bar() // 报错

这是因为,使用函数默认值 在编译后,会使用let变量声明

function bar(a,b) { 
  let a = b 
  let b = 3 
}

块级作用域

在ES6中,{},使用花括号即可建立一个块级作用域

{
  let a = 3
  {
    console.log(a)  // logs 3
  }
}

块级作用域是IIFE不再必要了
回想以下IIFE的作用

上一篇下一篇

猜你喜欢

热点阅读