Node.js变量、常量

【变量声明let】

 ES6新语法,用来声明变量。

        【作用】

        声明一个块级作用域的本地变量

        可以设置初始值

        【语法】

        声明变量

 let x
        //声明并设置初始值
        let y = 10
        console.log(y);
        //重新赋值
        y = "要想飞得高,就该把地平线忘掉" 
        //打印结果
        console.log(y);

 结果 :

 

 //【注意点1-不允许重复声明】
        //let不允许在相同作用域内,重复声明同一个变量。
        // function func(){
        //let a = 10;
        //var a = 10;
        // }
        // function func(){ 
        //let a = 10;
        //let a = 1;
        // }

        //【注意点2-有块级作用域】
        //它的用法类似于var,但是所声明的变量,只能在let命令所在的代码块内有效。
        //在下面代码块之中,分别用let和var声明了两个变量。
        {
            let a = 10;
            var b = 1; 
            console.log(a);//10
            console.log(b); //1
        }
        // console.log(a); //undefined
        //console.log(b);//1
        //结果let声明的变量报错,var声明的变量返回了正确的值。
        //这表面,let声明的变量只在它所在的代码块有效。
        //console.log(a);  //a is not defined
        //console.log(b);//1

        //【注意点3-不会变量提升】
        // var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为underfined。
        //这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用。
        //为了纠正这种现象,let命令改变了语法行为,它声明的变量一定要在声明后使用,否则报错.
        //var的情况
        console.log(foo);
        var foo = 2; // undefined
        //let的情况
        //console.log(bar); cannot access 'bar' before initialization(无法在初始化之前访问变
       // let bar = 2;

结果: 

 

 

【总结】

        1.不能重复声明

        2.有块级作用域

        3.不会变量提升

【常量声明const】

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

  //【语法】
        //声明并设置初始值
        const y = 10;
        
        //【注意点1-基本类型数据无法重新赋值】
        const PI = 3.1415;
        console.log(PI);
        //PI = 3;
        //console.log(PI); //Assignment to constant variable.(贼值给常量变量。)

        //【注意点2-必须设置初始值】
        // const声明的变量不得改变值,这意味着, const一旦声明变量,就必须立即初始化,不能留到以后赋值。
        // const foo;
        // console.log(foo);//Missing initializer.(缺少初始值)
        //只声明不赋值,就会报错。

        //【注意点3-有块级作用域】
        //const的作用域和let命令相同:只在声明的块级作用域内有效
        if(true){
            const MAX = 5;
            console.log(MAX);
        }
        //console.log(MAX); // MAX is not defined

        //【注意点4-不会变量提升】
        // const命令声明的常量也是不能提升,同样存在暂时性死区,只能在声明的位置后面使用。
        //if(true){
        //   console.log(MAX);//Cannot access‘MAX" before initialization
        //   const MAX= 5;
        //}

        //【注意点5-不能重复声明】
        // let age = 18;
        // const age = 30;

结果:

 

 

 1、在const中 ,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。

  2、对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。

  3、但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指向实际数据的指针。

  4、 const只能保让这个指针是固定的(即总是指向另一个固定的地址)。

       基本数据类型无法重新赋值。

       引用类型(对象、数组...),可以更改内容。

       (注:不能改的是栈)

 const a = [];
       a.push('过过过');//可执行
       console.log(a);
       console.log(a.length); //1
       a.length = 0;//可执行
       console.log(a.length); //0
       //a =['冲冲冲'] //Assignment to constant variable.(分配给常量变量。)
       //console.log(a);
       //上面的代码中,常量a是一个数组,这个数组本身是可写的,但是如果将另一个数组赋值给a,就会报错。

结果:

【总结】 

1.基本数据类型无法重新赋值(引用类型可以更改内容)

2.必须设置初始值

3.有块级作用域

4.不会变量提升

5.不能重复声明

【变量声明var】

var现在基本不用它,但是看到了你得认识他

【作用】

1.设置变量

2.和let非常类似

  //【语法】
       //1.声明变量
       var food
       //2.变量声明+初始值
       var noodle = '重庆小面'
       // 3.重新赋值
       noodle ='兰州拉面'
       console.log(noodle);//兰州拉面

       //【注意点1:变量会提升】
       var num
       console.log(num);
       num= 10;

       //【注意点2:没有块级作用域】
       for(var i = 1; i < 5 ; i++){
        console.log('循环内'+ i);
       }
       console.log('循环外'+ i);

结果:

 

【 变量提升】

变量提升即将变量声明提升到它所在作用域

通过var定义(声明)的变量,在定义语句之前就可以访问到。

 console.log(a);//underfinedI
        var a = 1;

        //因为有变量提升的缘故,上面代码实际的执行顺序为:
        var a;
        console.log(a);
        a = 1;

结果:

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值