自学内容网 自学内容网

javascript的let和var

在JavaScript中,varlet都用于声明变量,但它们有一些重要的区别:

1. 作用域

  • var
    • 函数级作用域:使用var声明的变量的作用域是函数级的。这意味着变量在整个函数内都有效,无论在函数内的哪个位置声明。
    • 例如:
      function test() {
        if (true) {
          var x = 10;
        }
        console.log(x); // 10,在if语句块外仍能访问x
      }
      test();
      
  • let
    • 块级作用域:let声明的变量具有块级作用域,只在其所在的代码块(用{}包围的区域)内有效。
    • 例如:
      function test() {
        if (true) {
          let y = 20;
        }
        console.log(y); // 报错,y在if语句块外不可访问
      }
      test();
      

2. 变量提升

  • var
    • 存在变量提升:使用var声明的变量会被提升到函数顶部,但变量的值是undefined,直到实际赋值语句执行。
    • 例如:
      console.log(x); // undefined
      var x = 10;
      
  • let
    • 不存在变量提升:在声明let变量之前访问该变量会导致ReferenceError
    • 例如:
      console.log(y); // 报错
      let y = 20;
      

3. 重复声明

  • var
    • 允许重复声明:在同一个作用域内可以多次用var声明同一个变量,后面的声明会覆盖前面的声明。
    • 例如:
      var z = 5;
      var z = 10;
      console.log(z); // 10
      
  • let
    • 不允许重复声明:在同一个作用域内不能用let重复声明已经存在的变量,会报错。
    • 例如:
      let a = 5;
      let a = 10; // 报错
      


原文地址:https://blog.csdn.net/qq_45755863/article/details/144029124

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!