2:let,var,const---变量和常量的定义

序:(初始化的意思就是赋值)

    定义常量:const

    定义变量:var,let


特性

const :1:第一次赋值以后就无法修改  2声明后必须马上初始化(赋值) 3:有块级作用域               4:无常量提升 存在暂时性死区,只在声明的位置后面使用。5:不可重复声明

var:1:可以重复声明 2:存在变量提升3:无法限制修改:4:没有块级作用域

let:1:不可以重复声明 2:不存在变量提升 3:有块级作用域

====》下面是代码示例:(复制到script里面查看console口)

概念:块级作用域{     }-------》作用域只在{  }有效,{  }外无效。

            暂时性死区


const

    1:const声明一个只读的常量。一旦声明,常量的值就不能改变

        const PI=3.1415;

        PI // 3.1415PI=3;        // 报错:TypeError: Assignment to constant variable.

    2:const一旦声明变量,就必须立即初始化,不能留到以后赋值。

        const foo;     // 报错SyntaxError: Missing initializer in const declaration

   3:有块级作用域,const的作用域与let命令相同:只在声明所在的块级作用域内有效。

        if(true){

            const MAX=5;

        }

        MAX         // 报错:Uncaught ReferenceError: MAX is not defined

    4:无常量提升,存在暂时性死区,只能在声明的位置后面使用。

        if(true){

            console.log(MAX); // ReferenceError

            const  MAX=5;

        }

    5:不可重复声明

        var message="Hello!";

        let age=25;

        // 以下两行都会报错

        const message="Goodbye!";

        const age=30;


var:1:可以重复声明 2:存在变量提升3:无法限制修改:4:没有块级作用域

        1:可以重复声明

                var a = 6;

                var a = 100000;

                console.log( a );      //a的值为100000,没有报错

        2:存在变量提升(可以在没有声明在前调用

            console.log(MAX);  // MAX的值为5,不报错

            var  MAX=5;

        3:无法限制修改

let:1:不可以重复声明 2:不存在变量提升 3:有块级作用域

        1:不可以重复声明

                    let a = 6;

                    let a = 100000;

                    console.log( a );      //报错

        2:不存在变量提升

                // var 的情况

                    console.log(foo); // 输出undefined

                    var   foo=2;

                // let 的情况

                    console.log(bar); // 报错    ReferenceError

                    let  bar=2;

        3:有块级作用域    (计数器i只在for循环体内有效,在循环体外引用就会报错。)

            概念:暂时性死区块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。

            for(leti=0;i<10;i++){ 

                // ...

            }

            console.log(i);    // 报错ReferenceError: i is not defined

你可能感兴趣的:(2:let,var,const---变量和常量的定义)