浅谈JavaScript中3种变量定义方式

在ES6中新增了一些对变量名操作的语法。在以前的版本中,javascript中的变量只能由var去定义,而在ES6又增加了两种新的定义方法,ES6中新增的两个定义变量的方式都是块级作用域,下面我来说一下javascript中三种定义变量的方式 const, var, let的区别?

1.var定义的变量可以修改,如果不初始化会输出undefined,可以多次定义同一变量,不会报错。
<script>
    var num = 100;
    var num2;
    num = 200;
    var num = 1000;
    alert(num);  //1000
</script>
2. const 是块级作用 域, 定义的变量不可以修改,而且必须初始化。
<script>
    //let和const都没有变量提升,只有var有
    alert(num); //error
    const NUM= 100;
    //   NUM = 200;  //error
    //    const NUM2;     //error
    alert(NUM);
    //let和const都是块级作用域
    const A= 55;
    function low(){
        const A= 100;
        alert(A);  //100 
    }
    alert(A);   //50
    low();
</script>
3. let 是块级作用域,函数内部使用let定义后,对函数外部无影响,定义的变量可修改。
注:在ES6以前没有块级作用域,所以也就有了JavaScript变量穿透的问题。
<script>
    let num = 200;
    num = 300;
    function number(){
    //这个变量和外部变量的作用域不同
        let num = 1000;
        alert(num); //1000
    }
           
    alert(num);  //300
   //let和const都没有变量提升,只有var有
    alert(num2);     //error
    let num2;
</script>
值的一提的是,在我以前写了一篇文章 浅谈Javascript变量提升当中,我简述了一下用var定义的变量都会把变量提升上面然后赋值undefined,在ES6中新增的const和let都不存在了,这一点要注意一下。
这些就是var,const,let基本的使用,建议在开发中尽量不要使用var用定义变量,因为性能太差了,可以重复声明变量,无法限制修改,没有块级作用域。
而定义变量用let,定义常量使用const,定义常量用大写字母命名,每个单词用下划线分开。因为这两种定义变量的方式都是块级作用域,且不可以二次定义相同的变量名,大大减少了开发中变量冲突的问题。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值