返回

彻底厘清JavaScript中的变量声明:var、let、const的用法及其区别

前端

一、概述:ES5与ES6的变量声明方式

在 ES5 中,我们只有两种方法来声明变量:

  • var - 用于声明函数作用域变量或全局变量。
  • function - 用于声明函数作用域变量或全局变量。

ES6中新增了三种声明变量的方式:

  • let - 用于声明块级作用域变量。
  • const - 用于声明常量。
  • import - 用于导入外部模块中的变量或函数。
  • class - 用于声明类。

二、var与let与const的区别

1. 变量提升

var声明的变量存在变量提升现象 ,这意味着在执行代码之前,所有使用var声明的变量都将被提升到函数作用域的顶部。

let和const声明的变量不存在变量提升现象 ,这意味着在执行代码之前,使用let或const声明的变量不会被提升到作用域的顶部。

2. 作用域

var声明的变量的作用域是全局或函数作用域 。这意味着可以在函数内部或外部访问var声明的变量。

let和const声明的变量的作用域是块级作用域 。这意味着只能在声明变量的块内访问let或const声明的变量。

3. 常量

const声明的变量是常量,这意味着一旦声明后就不能被重新赋值。 let声明的变量不是常量,可以被重新赋值。

三、变量命名规范

以下是编写JavaScript代码时的一些变量命名规范:

  • 变量名应使用小写字母和下划线。
  • 变量名应以字母开头,不能以数字开头。
  • 变量名不能使用保留字。
  • 变量名应尽可能短,但要清楚地表示变量的内容。
  • 变量名应使用驼峰命名法。

四、ES6新特性:import和class

1. import

import语句用于导入外部模块中的变量或函数。 例如,如果有一个名为"math"的模块,其中包含一个名为"add"的函数,我们可以使用以下语句导入该函数:

import { add } from "math";

然后,我们就可以在代码中使用add函数:

let result = add(1, 2);

2. class

class语句用于声明类。 类是一种用于创建对象的蓝图。例如,我们可以使用以下语句声明一个名为"Person"的类:

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  greet() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
  }
}

然后,我们可以使用new来创建一个Person对象:

let person = new Person("John Doe", 30);

然后,我们可以使用person对象来调用greet方法:

person.greet();

五、结语

var、let和const是JavaScript中声明变量的几种方式。它们具有不同的特点和适用场景。在ES6中,还新增了import和class这两种声明变量的方式。在编写JavaScript代码时,应遵循变量命名规范,以提高代码的可读性和可维护性。