EAScript 2016的新增语法(1)

1)let 语法,这个和var的声明类似,但是,只存在于其所在的代码块里。

举例:

var x=1
console.log(x)
{
    let     x=2
    console.log(x)
}

console.log(x)

输出值是什么?1 2 1,为啥?因为let x只存在于代码块里,和外面的x毫无关系。

var x=1
console.log(x)
{
    x=2
    console.log(x)
}

console.log(x)

输出是1 2 2

因此,let这个东西,就很适合在for语句中使用,避免对其他代码块造成误伤。

同时,let语句,要先声明,再使用,否则,会报错。

再看下面的代码:

 

var x=1
console.log(x)
{
    x=2
    console.log(x)
        let x
}

console.log(x)

 这个时候,会报错,说,x没有定义过!

 

let可以用来定义块级的作用域

  在ES5的时候,只有全局作用域和函数作用域,这会带来很多不便。比如:

  第一种情况,内层变量会覆盖外层变量:

    var tmp=new Date()

    function f(){
        
        console.log(tmp)
        
        if(false)
        {
            var tmp='hello wcf!'
        }

        console.log(tmp)
    }

    f()

这个时候,打印出来的是啥?

undefined

undefined

因为,tmp变量在函数里重新定义了,但是,又没有赋值,所以,是undefined。

再看代码:

    var tmp=new Date()

    function f(){
        
        console.log(tmp)
        
        if(true)
        {
            var tmp='hello wcf!'
        }

        console.log(tmp)
    }

    f()

 undefined

hello wcf!

有了let,就可以类似的定义块级作用域:

    var tmp=new Date()

    function f(){
        
        console.log(tmp)
        
        if(true)
        {
            let tmp='hello wcf!'
            console.log(tmp)
        }

        console.log(tmp)
    }

    f()

 

 

 

转载于:https://www.cnblogs.com/aomi/p/7133723.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值