node.js笔记------变量

1.变量声明let

作用:

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

      2.可以设置初始值

<script>
        let x
        // 声明并设置初始值 
        let y = 10
        console.log(y);//10
        // 重新赋值
        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.不会变量提升
    </script>

 2. const

 常量声明const1

<script>
       //【常量声明const】
       //const声明一个只读的常量。一旦声明,常量的值就不能改变  
       //【语法】
       //声明并设置初始值
       const y = 10;
       //【注意点1-基本类型数据无法重新赋值】
       const PI = 3.1415;
       console.log(PI);//3.1415
       //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.基本数据类型无法重新赋值(引用类型可以更改内容)
        //2.必须设置初始值
        // 3.有块级作用域
        // 4.不会变量提升
        // 5.不能重复声明
    </script>

 声明变量const2 

<script>
        // 在const中,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。
        // 对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。
        // 但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指向实际数据的指针
        // 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,就会报错。
    </script>

3.变量声明var

 <script>
        //【变量声明var】
        //var现在基本不用它,但是看多了你得认识她哦。

        //【作用】
        //1.设置变量
        //2.和let非常相似

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

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

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

4.变量提升

<script>
        //变量提升
        //变量提升即将变量声明提升到它所在作用域。

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

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

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

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值