JavaScript 中有多种数据类型,可以将它们大致分为两类:基本数据类型和引用类型。

基本数据类型包括数值、字符串、布尔值以及大整型、符号类型等,它们的值是直接存储的,而引用类型则包含对象、数组等,其值是引用指向内存中的某个位置。

理解和使用基本数据类型是学习表达式的基础。

1、基本数据类型

(1)数值型

数值(n umber) 是表示单一数字的类型,可以是整数或浮点数。

常用于表示量化的数值,比如位置、旋转、不透明度等属性的值。

示例:

var scaleValue = 100;  // 一个数字
var rotationValue = 45.5;  // 小数

(2) 字符串

字符串(string) 用于存储文本。它可以用单引号或双引号括起来。

在 After Effects 中,字符串常常用来表示图层名称、效果名称、文本内容等。

// 示例:
var layerName = "Layer 1";  // 字符串
var message = 'Hello, mediaTEA!';  // 另一种方式

如果要拼接字符串,可使用 + 号运算符。

"media" + "TEA"    // "mediaTEA"

如果要将数值转换为字符串,可使用 toString() 方法。

// 示例:
var num = 123;
num.toString() + "," + "mediaTEA"

(3) 布尔型

布尔值(boolean)表示 true(真)和 false(假),在逻辑判断中非常有用。在表达式中,布尔值常用于控制动画是否启用,或是否满足某种条件。

// 示例:
var isVisible = time > 2;  // 在时间大于 2 秒时返回 true,否则返回 false
var isAboveMiddle = transform.position[1] < thisComp.height / 2;  // 图层是否在合成上半部分

(4)大整型数据

大整型数据(bigint)用于存储超大整数。一般在数据后面使用 n 结尾。

var bigNumber = 123456789012345678901234567890n;

(5)符号类型

符号类型(symbol)用于创建唯一标识, 通常应用于对象的私有属性或 避免属性名称冲突。

示例:创建唯一标识

即使两个 Symbol 具有相同的描述,它们仍然是不同的。

var sym1 = Symbol("id");
var sym2 = Symbol("id");

sym1 === sym2;  // 返回 false。

Symbol 不能自动拼接字符串,但可以使用 toString() 进行转换。

2、类型转换与类型判断

JavaScript 中,数据类型可以相互转换。

(1) 类型转换

隐式转换:

JavaScript 会自动转换数据类型。例如,当我们将字符串与数字相加时,数字会被转换成字符串。

var result = "The number is: " + 7;  // result 为 "The number is: 7"

提示:

文本图层的“源文本”属性的数据会自动转换为字符串类型。

显式转换:

可以使用 String()、Number() 等函数来手动转换数据类型。

var str = String(42);  // 将数字转换为字符串
var num = Number("123");  // 将字符串转换为数字

(2)类型判断

可以使用 typeof 来判断变量的类型。

var testNumber = 123;
var testString = "Hello";
var arr = [1,2,3];

typeof testNumber;  // "number"
typeof testString;  // "string"
typeof arr;  // "object"

3、类型相关的常见问题

(1)隐式类型转换导致的错误

当我们将数字和字符串进行运算时,可能会遇到意外的结果。最好显式地转换数据类型,以避免出现错误。

(2)特殊值:null 和 undefined

null ,表示“有意为空”,是 JavaScript 的特殊值,通常用来表示一个变量没有值。

undefined,表示“未定义”,如果变量没有被赋值,就会默认为 undefined。

// 示例
var a = null;  // a 明确为空
var b;  // b 变量未赋值,默认为 undefined
typeof a;  // "object"(历史遗留问题,null 实际不是对象)
typeof b;  // "undefined"

(3)对象与基本类型的混淆

需要小心引用类型和基本类型的不同,尤其是在对对象进行赋值和传递时,引用类型会发生值的共享问题。

“点赞行美意,赞赏是鼓励”