ES6(ECMAScript 2015)变量新特性 let const

已被阅读 888 次 | 文章分类:javascript | 2018-04-05 16:03

该篇文章以实例来介绍ES6语法规则中声明变量新特性 let const,以及let与var关键词的区别

一:const命令

const命令用来声明一个只读的常量,一旦声明常量的值则不允许修改;其他的特性与let命令一样,后续详解let命令

                                            
<script>
    const PI = 3.1415;
    PI = 3;
    // Uncaught TypeError: Assignment to constant variable.
</script>
                                            
                                        

二:let命令-块级作用域属性

let是块级作用域的命令,当我们需要让变量只在块级作用域里有效的话,就需要使用它;最常用到的一个块级作用域需求-写循环体,我们通常都是希望变量只在循环体内有效。所以建议使用let,不会在循环体外污染变量;

                                            
<script>
    for (let i = 0; i < 5; i++) {
        console.log("循环体内,i=",i);
    }
    console.log("循环体外,i=", i)
    // 循环体内,i= 1
    // 循环体内,i= 2
    // 循环体内,i= 3
    // 循环体内,i= 4
    // Uncaught ReferenceError: i is not defined
</script>
                       
                                            
                                        

三:let命令-声明不提升

如果用var来声明一个变量,通常会发生声明提升现象,即声明在后使用在前;而如果用let来声明一个变量的话,不会发生声明提升。

                                            
<script>
    console.log("i",i);
    let i = 0;
    //Uncaught ReferenceError: i is not defined
</script>

<script>
    console.log("i=",i);
    var i = 0;
    //i= undefined
</script>
                                            
                                        

所谓的变量提升,即把变量的声明提升,不会提升变量的值;即下面这样;

                                            
<script>
    let i;
    console.log("i",i);
     i= 0;
    //Uncaught ReferenceError: i is not defined
</script>

<script>
    var i;
    console.log("i=",i);
    i = 0;
    //i= undefined
</script>
                                            
                                        

四:let命令-不可重复定义变量名

已经用let定义的变量,不可以再次定义,负责会报错;但是var可以重复定义

                                            
<script>
    let a = 10
    let a = 20
    console.log(a)
    // Uncaught SyntaxError: Identifier 'a' has already been declared
</script>

<script>
    var a = 10
    var a = 20
    console.log(a)
    // 20
</script>
                                            
                                        

五:let命令-不会给全局变量加属性

var 定义的变量会自动成为全局变量的属性,但是let声明的变量不会;

                                            
<script> 
        let a = 1
        var b = 2
        console.log(window.a)
        console.log(window.b)
        // undefined  2
    </script>
                                            
                                        

QQ:3410192267 | 技术支持 微信:popstarqqsmall

Copyright ©2017 xiaobaigis.com . 版权所有 鲁ICP备17027716号