ES6之let、const

var的缺点:

  1. 可以重复声明
  2. 没有块级作用域
  3. 无法限制修改

ES6之前JavaScript只有全局作用域和局部作用域,ES6新增了块级作用域(就是一对{}产生的作用域
1、变量只在块级作用域中访问,防止内层变量覆盖外层变量(变量赋值规则),避免了变量冲突
2、防止循环变量变成全局变量(for循环)

<button >按钮1</button>
<button >按钮2</button>
<button >按钮3</button>
<script>
    var btn = document.querySelectorAll('button')
    for (let i = 0; i < btn.length; i++) {
         btn[i].onclick=function(){
             alert(i)
         }
    }
</script>

let:

作用:变量可以赋值
特点:
1、块级作用域
2、不存在变量提升(只能先声明,再使用)
3、暂时性死区

var num = 123
        if (true) {
            console.log(num)  // 不会输出任何值
            let num
        }

const

应用:声明的数据不需要变化,比如函数的定义,π值(数学中恒定不变的值),由于值不会变化,JS引擎不会实时监视,效率会更高
作用:声明常量,常量就是值(内存地址)不能变化的量
特点:
1、块级作用域{}
2、必须赋初始值 const a = 10
3、赋值后,值不可更改,但是可以改变复杂数据类型的内部值(比如数组,对象,函数)

闭包(函数):外部作用域访问函数内局部变量,作用:延伸了变量的作用范围
递归(函数):一个函数在内部调用其本身,递归函数和循环效果一样,由于递归很容易发生“栈溢出”错误,所以递归函数必须要加退出条件return

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值