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)对象与基本类型的混淆
需要小心引用类型和基本类型的不同,尤其是在对对象进行赋值和传递时,引用类型会发生值的共享问题。
“点赞行美意,赞赏是鼓励”
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.