声明、定义、初始化,这三个概念是有区别的,用 JavaScript 的时候,我们基本不会考虑这三个东西,所以可以参看一下 C/C++ 中对它们的不同的解释,目前学习了一点点语法,再参看这一篇博客《C语言中声明和定义详解》,有一些粗浅的理解。

一、声明(Declaration)

声明一个东西,意味着

  • 仅仅新增一个名字和类型(JavaScript无类型)
  • 不分配内存空间
  1. // 引入外部变量 i
  2. extern int i;
  1. // 引入外部函数 fetchPure
  2. import {fetchPure} from 'common'

二、定义(Definition)

定义一个东西,意味着

  • 新增了一个名字和类型(JavaScript无类型)
  • 分配了内存空间
  • 不管内存空间有无东西
  1. // 定义变量a,分配了4个字节内存空间
  2. int a;
  1. // 定义变量a,分配一定内存空间
  2. let a

三、初始化(Initialization)

初始化一个东西,意味着

  • 新增了一个名字和类型(JavaScript无类型)
  • 分类了内存空间
  • 内存空间有我们往里添加的东西
  1. int a = 5;
  1. let a = 5

四、小总结

他们的区分关键分两步:

  1. 先看有没有新增内存地址,没新增就是声明,新增了就是定义或者初始化
  2. 再看有没有给它分配内容,没分配就是定义,分配了就是初始化
  • 声明一般用于引入外部变量,意味着它的定义在其他地方,我们把拿过来用一下,所以可以多次声明
  • 初始化一定就伴随着定义,定义不一定伴随着初始化
  • 定义和初始化相比较,我一般尽可能用初始化,实在不行我才会仅仅初始化(写 JavaScript 的时候)

「@浪里淘沙的小法师」