数据类型
TJS2 虽然不需要定义变量的「类型」,但在内部实际上变量拥有类型。相比“变量不具有类型”的说法,“类型将被自动地动态处理”这种说法更加准确。
TJS2 的内部类型,有void
, 整数型、实数型、字符串型、对象类型、字节串型等。
void
void 表示“什么也没有” ( 与 JavaScript 中的意义不同 )。刚刚声明并且没有初始化的变量的值就是 void
。
void
之间的比较可以使用 ===
(类型识别比较) 运算符。
对于 void 类型变量,typeof
运算符将返回 "void"
。
整数型
TJS2 把所有整数型当作 64bit 精度的整数处理。通常整数型都会被当作有符号整数处理,唯一的例外是 >>>
运算符会把左边当作无符号整数处理。
对于整数类型变量,typeof
运算符将返回 "Integer"
。
实数型
TJS2 把所有实数型当作 64bit 精度的实数 ( 双精度实数 ) 处理。
对于实数类型变量,typeof
运算符将返回 "Real"
。
字符串型
TJS2 的字符串是不定长度,以 0 终结的字符串。所谓的“以 0 终结的字符串”是指假定以 \0
终结的字符串。
文字代码是以宽字符方式处理 ( 通常为 UNICODE ) ,具体使用 16bit的宽字符还是 32bit的宽字符由 TJS2 运行的的环境决定。比如说在 Windows 上是 16bit,在 Solaris 和 Linux 等环境下则是 32bit。
对于字符串类型变量,typeof
运算符将返回 "String"
。
对象类型
对象类型,是指TJS语言中表示对象的类型。除了使用 new
运算符创建的对象之外,函数、类、属性对象等都被作为对象类型处理。
对于对象类型变量,typeof
运算符将返回 "Object"
。
TJS 和 JavaScript 不同,TJS2 的对象类型,除了包含指向对象本身的指针之外,还包含指向对象所在的上下文对象的指针。闭包(Closure)功能的实现由于这种特性的存在而成为可能。变更对象上下文的运算符是 incontextof
运算符。
字节串型
字节串型是处理 8bit 数据组成的数据串的类型。该类型的主要功能是处理二进制数据。
对于字节串型变量,typeof
运算符将返回 "Octet"
。