var let const 区别

var 与 let 的联系与区别

同:都是用来声明变量
异:var 全局声明,let 局部声明仅在声明的块级作用域内有效

<script type="text/javascript">
{
var a = 1;
let b = 2; 
console.log("a0="+a);
console.log("b0="+b);
} 
console.log("a="+a);
console.log("b="+b); 
</script>

如代码所示最后一个console.log报错,原因:let 局部声明仅在声明的块级作用域内有效
在这里插入图片描述

let适用于for循环中

var a = [];
for (var i = 0; i < 10; i++) {  
    a[i] = function () { 
        console.log(i);  
    };
}
a[2]();
var b = []; 
for (let k = 0; k < 10; k++) {  
    b[k] = function () { 
        console.log(k);  
    };
}
b[2]();

原因:

i是var声明的,在全局范围内都有效,console.log(i),里面的i指向的就是全局的i,所以最后输出的是10
k是let声明的,只在本轮循环局部有效,console.log(k),每一次for循环的k都为新变量,所以最后输出的是2。
在这里插入图片描述
var 的声明,存在变量提升。

let 的声明,不存在变量提升。

const 的声明,不存在变量提升。

1<script type="text/javascript">

     console.log(f1);  var f1 = 1; 

     console.log(f2);  let f2 = 2; 

</script>2<script type="text/javascript">

    console.log(f1);   var f1 = 1; 

    console.log(f3);   let f3= 3;

</script>

在这里插入图片描述

在这里插入图片描述

let不允许在相同作用域内,重复声明同一变量。

<script type="text/javascript">
function func() {
  let a = 1;
  var a = 2;
  console.log(a)
}
func();
</script>

在这里插入图片描述
const声明一只读的常量,声明后值不能进行改变

<script type="text/javascript">
    const f1 = 123;
     console.log(f1)
     f1= 3;
     console.log(f1)
</script>

在这里插入图片描述

注意事项

  • var为全局变量,在for循环中,容易泄露成了全局变量。
  • let局部变量
  • const常量声明
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值