es6变量声明的6种方法

ES5只有两种变量声明的方法,分别是varfunction关键字。ES6相比ES5多了letconstimportclass这四个关键字。
最早的ES5使用varfunction这两个关键字声明的变量会触发变量声明提前,这个大家都很熟悉。但是ES6新增的letconst这两个块级作用域的变量声明关键字则不会。

let

在代码块内,使用let关键字声明变量之前,该变量都是不可使用的,也就是在这个代码块内,只要声明的该变量,但是在该变量声明之前调用了,就会报错。这在语法上称为“暂时性死区(参照阮一峰的ES6入门,见下例:)。”

{
    console.log(b); //ReferenceError
    let b = 123;
}

const

使用const关键字声明变量的作用域也是块级作用域,但是constlet还是有着非常明显的区别的:使用let关键字声明的变量,它的值可以改变;使用const关键字声明的变量,它的值可以改变,但是变量所指向的内存中的地址是不可改变的。

{
    const a = {
        p: 123,
        d: 234
    }

    a.f = 345;
}

上述代码是不会出错的。但是如下操作是会报错的:

{
    const a = {
        a: 123
    }

    a = { // TypeError: Assignment to constant variable
        b: 234
    }
}

这个就是改变了常量a在内存中的地址。

import

import 是用于在一个模块中加载另一个含有export的模块。写法如下:

import React from 'react';
或
import React, { Component } from 'react';

前面的这个React实际是自己定义的一个要引入文件的名称,也就相当于声明变量。这个就是引入react模块并命名为React,从react中引入React以及Component。

class

es6引入了class(类)这个概念,使其看起来更加像传统的面向对象的语言例如java或者C++。通过class关键字,可以定义类(声明或定义了一个对象)。

class Person() {

}

类里面还有构造方法(constructor),这个就不在这里描述了。

发表评论

邮箱地址不会被公开。 必填项已用*标注