欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-05 11:12:12
...
在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,定义常量用大写字母命名,每个单词用下划线分开。因为这两种定义变量的方式都是块级作用域,且不可以二次定义相同的变量名,大大减少了开发中变量冲突的问题。