let/var/const的比较

本文探讨了ES6中引入的let与const关键字如何解决了变量提升和块级作用域问题,通过具体示例展示了let如何避免循环闭包中的常见陷阱,并强调了const在变量声明中的最佳实践。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<button>按钮4</button>
<button>按钮5</button>
<!--在es5之前因为iffor都没有块级作用域的概念,所有很多时候,我们都必须借助于function的作用域来解决引用外面变量的问题
    在es6中加入了letlet他是有iffor的块级作用域
-->
<!--1.变量的作用域,变量在什么范围内是可用的
    2.没有块级作用域会引起的问题,if 的块级
    iftrue{
       var name=‘why’;
    }
    console.log('why');{}作用域里面定义的变量,却能在外部被使用


    3.没有块级作用域引起的问题:for的块级
    为什么闭包可用解决问题,因为函数有作用域,所有里面的变量不会被改掉
-->
<!--使用const修饰的标识符为常量,不可以被在此赋值
    建议在开发时,优先使用const,只有需要改变某一个标识符的时候才使用let
-->
<script>
  //注意一:一旦给const修饰的标识符,被赋值之后不能修改
  const name ='why';
  //注意二:在使用const定义的标识符,必须进行赋值,否则会报错
  // const age;
  //注意三:常量的含义是指向的对象不能修改,但是可以改变对象内部的属性
  const obj ={
    name:'why',
    age:18,
    height:188,
  }
  obj.name='kobo';


  var btns=document.getElementsByTagName("button");
  for(let i=0;i<btns.length;i++){
    btns[i].addEventListener('click',function (){
      console.log('第' + i + '个按钮被点击');
    })
  }
  // for(var i=0;i<btns.length;i++){
  //   btns[i].addEventListener('click',function (){
  //     console.log('第' + i + '个按钮被点击');
  //   })
  // }
</script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值