JavaScript——ES6新增特性let和const

ES6新增加了两个重要的 JavaScript 关键字: letconst

  • let 声明的变量只在 let 命令所在的代码块内有效(块级作用域、局部作用)

  • const 声明一个不可修改的常量,一旦声明,常量的值就不能改变

1.let

        1)let声明的变量不存在提升,不能在let代码运行先,调用变量

console.log(a)
let a="报错"

        正确的顺序应该是:

let a="正常运行"
console.log(a)

        2)let声明的变量只在所在代码块内生效

{
    let a="只在代码块内生效"
    console.log(a)//正常运行
}
console.log(a)//报错,a未定义

        let在全局中声明的变量,局部作用域,块级作用域中也可以使用,但你却不能使用window.a访问这个变量

let a=12
        !function(){
            console.log(a)
        }()
//打印12
        {
            console.log(a)
        }
//打印12
        console.log(window.a)
//undefined

        3)不能重复声明let声明的变量,但可以改变变量的值

let a=12
let a=12
//报错
----------------------------------
let a=12
{let a=12}
//不报错
----------------------------------
{
let a=12
let a=12
}
//报错
----------------------------------
let a=12
a=13
//不报错
----------------------------------
{
let a=12
a=13
}
//不报错

        4)重新定义变量问题,let在不同作用域中声明同名变量不会改变其他作用域中该变量的值

let a=12
console.log(a)//12
{
let a=30
console.log(a)//30
}
console.log(a)//12

2.const

        1)一旦声明,必须初始化,否则报错

const a
a=12
//报错

        2)当你试图改变变量的值,报错

const a=12
a=30
//报错

        3)和let一样不存在提升,不能在声明前使用该变量

console.log(a)
const a=12
//报错

         4)和let一样,在全局声明,你可以在块级,局部作用域调用它,但仍然不能使用window.a调用

const a=12
{
    console.log(a)//12
}
    console.log(a)//12
!function(){
    console.log(a)//12
}()


const a=12
console.log(window.a)
//undefined

        5)在不同作用域可以声明相同变量,同作用域就不行,同let

const a=12
{
const a=30
}
//不报错


const a=12
const a=30
//报错

3.总结

共同点:1.同作用域不能重复声明相同变量,不同作用域可以声明同名变量

               2.在全局作用域声明的变量都不能使用window.变量名调用,原因:其实这里let const声明的变量属于顶层作用域

               3.都不存在提升,不能在声明前使用

               4.暂时性死区:ES6 明确规定,代码块内如果存在 let 或者 const,代码块会对这些命令声明的变量从块的开始就形成一个封闭作用域。代码块内,在声明变量 a之前使用它会报错。

const a=12
        {
            console.log(a)//报错

            const a=30
        }

               5.……

不同点:1.const必须初始化(第一次赋值),let不用

               2.const的值不可修改,let可以再修改变量的值

        

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值