ES6-第一天

let与const

  1. let是用来定义变量的,在同一个作用域里面,不能用let定义相同的变量名,块级作用域内部的函数声明语句,建议不要使用,优先使用函数表达式,let定义的变量不会进行变量提升,由let声明的变量是在块级作用域里面,只要在块级作用域里用let定义了变量,它所声明的块级作用域霸道,也就是我们常说的暂时性死区,下面我们通过代码来加深理解:
	//a) 这里用let定义的变量i没有进行变量提升,此时输出的i在代码里根本就没有被定义 
	console.log(i) //Uncaught ReferenceError: Cannot access 'i' before initialization
    let i=20

	//b) 这里用let两次定义了相同的变量名并赋值,输出a的时候控制台会告诉你这个a已经被声明过了,使用let变量不会覆盖之前的a的值
	let a=5;
    let a=10;
    console.log(a) //Uncaught SyntaxError: Identifier 'a' has already been declared
	
	//这里需要加注说明,如果使用了var声明了变量也是不能再使用let声明了,使用了let声明了变量也是不能再使用var声明了
	let a=20
    var a=15
    console.log(a)  //Uncaught SyntaxError: Identifier 'a' has already been declared
    var a=15
    let a=20
    console.log(a)  //Uncaught SyntaxError: Identifier 'a' has already been declared

	
	//但是我们可以对a进行重新赋值,下面的这种写法不会报错
	let a=5;
    a=10;
    console.log(a) //10

	//c) let声明的变量只在块级作用域里面生效,这里外部输出的a根本就没有被定义过,所以控制台会输出a is not defined
	{
      let a=20;
      console.log(a) //20
    }
      console.log(a) //text1.html:15 Uncaught ReferenceError: a is not defined

	//d)暂时性死区,这里在不写块级作用域里面的a的时候,是可以正常输出20的,但由于在块级作用域里面使用let声明了a的值,会导致它声明的这个a霸占了整个块级作用域;暂时性死区简单理解,就是在块级作用域内,不能使变量进行提升,所以在声明变量前使用变量会报错
	let a=20;
    {
	  console.log(a) //Uncaught ReferenceError: Cannot access 'a' before initialization
	   let a=15
     }

	//e) 在这里我们强调一下,使用let变量的时候是点击第几个显示第几个的下标,但如果使用var,无论你点击哪一个,都是会输出最后一个i
	<ul>
        <li style="width: 300px;height: 300px;background-color: red;">11</li>
        <li style="width: 300px;height: 300px;background-color: blue;">22</li>
        <li style="width: 300px;height: 300px;background-color: blueviolet;">33</li>
    </ul>
    <script>
        var oList = document.querySelectorAll('li')
        for(let i=0;i<oList.length;i++){
            oList[i].onclick = function(){
                console.log(i) 
            }
        }
    </script>
  1. const是用来定义常量的,且常量的值不能被修改,和let一样也不可以重复声明,不会进行变量提升,是块级作用域,const修饰引用类型的时候,要注意,它限制的是地址,为了便于理解,还是上代码:
	//a) 和let一样这里的a已经被定义过了,不能被重复定义,会报错
	const a=10;
    // const a=20;
    // var a=20
    // let a=20
    console.log(a)  //Uncaught SyntaxError: Identifier 'a' has already been declared
	
	//b)和let一致的就不细说了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值