js 声明变量时 let、var、const 的区别

let、const是es6新提出的定义变量的方法。let已经被广泛使用,它能弥补var在使用上的某些不足。

1.var 

  • var的作用域是全局作用域与函数作用域(局部)
  • var声明的变量,可修改变量值,可重新声明
    var v2 = 1;
    var v2 = 2;
    console.log(v2);  /*2,var可被重复声明*/
  • 使用var定义的变量,会自动变成window对象的属性,不管在全局作用域与局部作用域内都是。let、const不会
      var v2 = 2;
      console.log(window.v2); /*2,var全局变量自动添加window变量的属性*/
      let v3 = 1;
      console.log(window.v3); /*undefined*/
  •   var的提升时,声明与函数被提到作用域顶部,并对变量赋undefined的初始值。
      function func() {
        console.log(name);
        var name = 'fkit';/*var name提前并赋初始值,输出undefined*/
        console.log(name);
      }

3. let

  • let作用域是块级作用域,{ }大括号内就是一块,仅在当前块中有效;

  • let定义的变量可以被修改,但是在同一个作用域中无法被多次定义,
      let v1 = 1;
      v1 = 2; /*修改变量的值*/
      console.log(v1); /*2,一个作用域内可被修改*/
      let v1 = 3;
      console.log(v1); /*报错,一个作用域内不能重复声明*/

在不同的作用域中可定义相同的变量 ,互不干扰。因为他们是在不同的作用域内。

      let v1 = 1;
      console.log(v1);  /*1*/


      if (v1 === 1) {
        let v1 = 2;
        console.log(v1); /*2*/
      }
  •  let 的变量提升.let的声明也会被提升到作用域顶部,但是不会进行undefined赋值。若不赋值就使用会报错
          function func() {
            console.log(name); /*未提前声明name,报错*/
            let name = 'fkit';
            console.log(name);
          }
           func();

    3. const

  • const是块级作用域 
  • const 不能被修改并且不能被重新声明,相当于定义了一个常量。
      const v4 = 1;
      v4 = 3;/*试图修改值*/
      console.log(v4);/*报错*/
      const v4 = 1;
      const v4 = 2;
      console.log(v4); /*报错*/
  • 都说const定义的值不能修改,其实应该是定义的值的地址不能被修改。因为当const定义了复杂数据类型时,还能去操作他的元素。

       当使用const定义对象的时候,可以使用对象名.属性  = 属性值的方式修改对象的属性值。

const obj = {
    times: 4,
};
obj.times = 5;
  •  const的变量提升,与let一样,提升到作用域顶部,但不初始化。定义不赋值就使用会报错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值