返回

ES6中的var、let、const与static

前端

var

var是ES6之前唯一的变量声明方式。它声明的变量具有函数作用域,即在函数内声明的变量只能在该函数内使用,在函数外无法访问。

function foo() {
  var x = 10;
}

console.log(x); // ReferenceError: x is not defined

let

let也是一种变量声明方式,但它声明的变量具有块级作用域,即在代码块内声明的变量只能在该代码块内使用,在代码块外无法访问。

if (true) {
  let x = 10;
}

console.log(x); // ReferenceError: x is not defined

const

const也是一种变量声明方式,但它声明的变量是常量,即该变量的值一旦被初始化就无法被修改。

const x = 10;
x = 20; // TypeError: Assignment to constant variable.

static

static用于声明静态方法和属性。静态方法和属性属于类本身,而不属于类的实例。

class Foo {
  static bar() {
    console.log('Hello, world!');
  }
}

Foo.bar(); // Hello, world!

注意点

var

  • var声明的变量具有函数作用域,即在函数内声明的变量只能在该函数内使用,在函数外无法访问。
  • var声明的变量可以重复声明,但会覆盖之前声明的变量。
  • var声明的变量可以在声明之前使用,这会导致暂时性死区。

let

  • let声明的变量具有块级作用域,即在代码块内声明的变量只能在该代码块内使用,在代码块外无法访问。
  • let声明的变量不能重复声明,否则会报错。
  • let声明的变量可以在声明之前使用,但不会导致暂时性死区。

const

  • const声明的变量是常量,即该变量的值一旦被初始化就无法被修改。
  • const声明的变量不能重复声明,否则会报错。
  • const声明的变量必须在声明时初始化,否则会报错。

static

  • static关键字用于声明静态方法和属性。
  • 静态方法和属性属于类本身,而不属于类的实例。
  • 静态方法可以通过类名直接调用,而静态属性可以通过类名.属性名直接访问。

总结

ES6中新增了三种变量声明方式:var、let和const,以及static关键字用于声明静态方法和属性。这四种声明方式各有其特点和用途,在实际开发中应根据具体情况选择合适的声明方式。