ES6--变量声明方式的新特性

298 阅读1分钟

ES6新增变量声明方式--- let,const


  • let和const不能进行变量提升(不能在声明前使用变量)
  • let禁止重复声明变量;var则可以重复声明
  • const在变量声明时必须初始化,在后面出现的代码中不能再修改该常量的值
  • var的作用域为方法作用域,如果在方法中定义,则后面的代码都可以使用
  • let和const为的作用域块级作用域,只能在定义的代码块内进行使用
  • var在变量未赋值时,声明的变量值为undefined
// let和const不会进行变量提升
// 不会报错,输出undefined
console.log(boyName)
// 会报错
console.log(sex)
console.log(age)
var boyName = '小李'
let sex = '男'
const age = 18

作用域--- 块级作用域,全局作用域,函数作用域

// 作用域
// 全局作用域
var boyName = '小李'
let sex = '男'
const age = 18
function say() {
    // 函数作用域
    var girlName = '小红'
    let home = '广州'
    const school = '仲恺'
    let i = 18

    if(age >= i) {
        // 块级作用域
        let adult = '成年'
        // 在作用域内,可以正常输出
        console.log(adult)
    }else {
        const underAge = '未成年'
        // 在作用域内,可以正常输出
        console.log(underAge)
    }
    // 在adult的作用域之外,会报错
    console.log(adult)
    // 在underAge的作用域之外,会报错
    console.log(underAge)
    // 在函数作用域内,可以正常输出
    console.log(`我叫${girlName},家在${home},学校是${school}`)
    // 变量为全局作用域,可以正常输出
    console.log(`我叫${boyName},性别${sex},今年${age}岁`)
}

function comeback() {
    // 在函数作用域外,不能正常输出,报错
    console.log(`我叫${girlName},家在${home},学校是${school}`)
}

say()
comeback()