// 1、var 声明的变量是函数级作用域
    //       let和const是块级作用域。(在{}内声明的变量就只能在该区域内访问。)
        var age=18;
        if(age>18){
            var days=18*365;
            console.log(`虚度${days}天`);
        }
        days=2048;//由于var 是函数级作用域,所以在这里也能访问到。声明days的地方并不是在一个function当中。如果换成let或者const来访问,那么就会报错了。


        //如果使用var 在方法中声明变量,那么该变量只能在这个方法中使用。
        // 如果在函数外部声明,那么就可以当做全局变量来使用
        function GetPrice () {
             var price=100;//若是在该函数外使用price,则会报错undefined
             console.log(price);
        }
    //2、使用var声明的变量可以重复定义,而使用let或const声明的变量则不可以重复定义。
      var price=100;
      var price=200;//这里不会报错。
      const discount=0.9;
      let name="vichin";
      let name="stephen";//这里就会报错!
      if(discount>1){
          let name="stephen";//这里就不会报错。此前的name="vichin"是全局作用域,而此处的是块级作用域。
      }
      //当const类型的变量被赋值为一个值类型的值时,是不可以被重新赋值的。如果const类型的变量被赋值为一个引用类型的值时,是可以修改引用类型变量中的某些属性的。
      const person="vichin";
      person ="stephen";//这里就会报错。
      const person={
          name:'vichin';
          age:26
      };
      person.age=27;//这里就不会报错。
      // 如果不想让别人修改person对象中的属性,则可以使用
      const vichin=Object.freeze(person);

      // 当我们使用var关键字声明一个name的全局变量的时候,会产生环境污染,将window自带的属性name的值也给替换掉。往常的方法是使用一个立即执行函数,然后将变量声明在这个立即执行函数当中。
      // 可以使用let这个块级作用域的关键字来声明变量。
      {
          let name="vichin";
      }
变量声明

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-11
  • 2021-11-05
  • 2021-08-02
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-06-10
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案