JS定义变量 ES6中let ,const 与ES5中的var的区别

本文探讨了JavaScript中var、let及const的区别,重点讲解了它们在变量提升、作用域等方面的特性。通过实例展示了不同变量声明方式的影响。

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

有时候当我们用var定义变量的时候,时常要注意变量的作用区间,经常一不小心没注意就会出现错误,换成let定义的时候,就不会担心变量跨作用域。
例如: i的变量泄露

for(var i = 0 ; i<5 ; i++){
            console.log(i);
        }
        console.log("最后i的值"+i)

此时外面的i
此时i循环了五次,输出,可是外面的i的值也同样发生了改变。但是,如果采用let定义变量的话,那么最后输出i的时候会报错,会报出i未定义。

let const 和var 的区别

① var定义的变量是全局变量,也是window属性下的变量。而let,const定义的变量是块级作用域的,即变量只能在定义它的最小的代码块里面使用,这也是为什么上面循环后最后输出i的值会报错的原因。
② var存在变量提升,而let ,const定义不存在变量提升。也就是说,let,const一定要将变量先定义,才能使用,不然会报错。

 var a = "你好"; // 如果将var 换成let 则输出为你好
        function fn() {     
            //使用a 查看函数内部有没有定义a 
            console.log(a);   //输出undefined
            if (false) {
                var a = "小明";  //变量提升
            }
        }    
        fn();

函数fn()里面var a = “小明” 即使没执行,但是也会变量提升,就是将var a 在函数fn 里面第一句就执行,所以此时输出a是未定义 。如果将外面的var 换为let ,则输出你好。
③ let,const在一个代码块里面只能定义同一变量一次,而var 可以在一个代码块里面重复定义变量,重复赋值。
④ var 子作用域定义了 父作用域可以用 let 子作用域定义的 父作用域用不了

for(var i = 0 ; i<5 ; i++){
            var i = 10;
            console.log(i);  //循环一次 输出10
        }

        for(let i = 0 ; i<5 ; i++){
            let i = 10;
            console.log(i); //循环十次 输出10   里面的i和for循环里面的i不是在同一个作用域
        }

let定义变量可以减去ES5 var定义带来的诸多麻烦。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值