在刚刚接触字面量,常量,变量这三者时,不是特别清晰他们的差别,今天通过解释,举例来详细解释一下。
表达式
在解释三者差别之前,我们首先要明晰一些概念:什么是表达式? 表达式是可以被求值的代码。因为表达式可被求值,所以它可写在赋值语句等号的右侧。 例如:
1+1
这是一个表达式,对这个表达式求值,会得到数字2。
22
这也是一个表达式,对这个表达式求值,会得到它自己, 也就是数字22。
字面量
官方解释:
在计算机科学中,字面量(literal)是用于表达源代码中一个固定值的表示法(notation)。几乎所有计算机编程语言都具有对基本值的字面量表示,诸如:整数、浮点数以及字符串;而有很多也对布尔类型和字符类型的值也支持字面量表示;还有一些甚至对枚举类型的元素以及像数组、记录和对象等复合类型的值也支持字面量表示法。
我的理解:
- 字面量:该表达式的值就是其字面所展示的内容的量。
- 那么字面又是什么意思呢?通俗的说就是:我一眼就能直接看出。稍稍官方一点就是:使用简单结构和符号所创建。
- 所以最终得出的解释就是:
字面量:该表达式的值是我可以一眼看出。/使用简单结构和符号创建对象的表达式。 - JavaScript支持字符串字面量,数字字面量(即2, 8, 10, 16进制数),布尔值字面量(true, false),对象字面量({}),数组字面量([]),匿名函数字面量(function, lambda)以及正则表达式字面量(/.*/)。
示例:
22
我们一眼看出这个表达式的值是22。这就是一个数字字面量。
'Hello'
我们一眼看出这个表达式的值是Hello。这就是一个字符串字面量。在许多语言中, 字符串字面量包含在一对双引号中。
{
key1: val1,
key2: val2,
fun () {
}
}
我们一眼看出这个表达式的值是一个对象,他有属性1,属性2,方法fun。这就是一个对象字面量。
String('Hello')
这就不是一个字面量。我们无法一眼看出这个表达式的值,而是通过对String()方法的理解加工之后才得出它的值。(因为String()方法内部包含更多的代码)
变量
官方解释:
- 变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念。
- 变量可以通过变量名访问。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变的。
- 在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象(如在Java和Visual Basic中);但另外一些语言可能使用其它概念(如C的对象)来指称这种抽象,而不严格地定义“变量”的准确外延。
我的理解:
- 一块内存空间的名字。(该内存空间的数据可以变化)
- 操作变量的本质就是操作它对应的内存空间。
- 人的名字就是一个变量,我们通过‘名字’来操作‘这个人’。
示例:
var a;
a = 10;
常量
官方解释:
“常量”的广义概念是:‘不变化的量’(例如:在计算机程序运行时,不会被程序修改的量;数学函数中的某一个量,例如每一个具体的圆的半径、直径数值;物理学中的靠近地面的重力加速度;真空中的光速数值;不同的微粒的各自的质量)换言之,常量,在计算机技术方面虽然是为了硬件、软件、编程语言服务,但是它并不是专门为硬件、软件、编程语言而引入的概念。常量可区分为不同的类型,如:25、0为整型常量,6.8为实型常量,‘a’、‘b’为字符常量。常量一般从其字面形式即可判断。这种常量称为字面常量或直接常量。
我的理解:
常量就是内部数据不可改变的变量。
示例
const a = 10;
|