javascript中var与let与const的区别

本文详细对比了JavaScript中var与let两种变量声明方式的差异,包括作用域限制、变量提升、重复声明及for循环中的表现。通过具体代码示例,帮助读者理解ES6中变量声明的新特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:https://blog.youkuaiyun.com/lq15310444798/article/details/78405252

var与let的区别
到ES6的时候,javascript中声明变量的方式有三种var、let、const

1:作用域只是局限于当前代码块


        {
            var str = "aaa";
            console.log(str);//aaa
            let str1 = "dddd";
            console.log(str1);//dddd
        }
        console.log(str);//aaa
        console.log(str1);//报错,str1 is not defined
上面代码中采用var 和 let 分别申明了变量,采用var 申明的变量在外面可已使用,但采用let申明的变量只能在当前代码块中使用,在外边是用不了。


2:使用let 申明的变量作用域不会提升,而采用var申明的会作用域提升。

采用var申明变量


        //采用var 申明的变量作用域会提升
        {
            console.log(a);//输出undefined
            var a = "dd";
        }
上面的代码经过作用域提升之后相当于下面的代码

        //作用域声明提升总是会将变量的申明提升到当前作用域的最前面,如下所示
        {
            var a;
            console.log(a);//因此输出为undefined
            a = "ddd";
        }
采用let申明的变量作用域不会提升,因此下面代码将会报错

        {
            console.log(b);//这里将会报错,因为b没有申请
            let b = "SYC";
        }

3:采用let在相同的作用于下面不能申明相同的变量,采用var申明相同的变量后面会覆盖当前作用域前面的
4:for循环体现父子作用域

例子:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<button>按钮4</button>
<button>按钮5</button>
    <script>
       var btns = document.getElementsByTagName('button');
       for(i var i = 0; i < btns.length; i ++){
            btns[i].onclick = function(){
                alert("按钮"+i);//这里一直是按钮4
            }
       }
    </script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值