Jscript 有三种主要数据类型两种复合数据类型和两种特殊数据类型
主要(基本)数据类型是
字符串
数值
布尔
复合(引用)数据类型是
对象
数组
特殊数据类型是
Null
Undefined
字符串数据类型
一个字符串值是排在一起的一串零或零以上的 Unicode 字符(字母数字和标点符号)字符串数据类型用来表示 JScript 中的文本脚本中可以包含字符串文字这些字符串文字放在一对匹配的的单引号或双引号中字符串中可以包含双引号该双引号两边需加单引号也可以包含单引号该单引号两边需加双引号下面是字符串的示例
Happy am I; from care Im free!
Avast ye lubbers! roared the technician
c
请注意JScript 中没有表示单个字符的类型要表示 Jscript 中的单个字符应创建一个只包含一个字符的字符串包含零个字符()的字符串是空(零长度)字符串
数值数据类型
在 Jscript 中整数和浮点值没有差别JScript 数值可以是其中任意一种(JScript 内部将所有的数值表示为浮点值)
整型值
整型值可以是正整数负整数和 可以用 进制 进制和 进制来表示在 Jscript 中大多数字是用十进制表示的加前缀表示 进制的整型值只能包含 到 的数字前缀为同时包含数字或的数被解释为十进制数
加前缀x(零和x|X)表示 进制整型值可以包含数字 到 以及字母 A 到 F(大写或小写)使用字母 A 到 F 表示十进制 到 的单个数字就是说 xF 与 相等同时 x 等于
八进制和十六进制数可以为负但不能有小数位同时不能以科学计数法(指数)表示
浮点值
浮点值为带小数部分的数也可以用科学计数法来表示这就是说大写或小写e用来表示 的次方Jscript用数值表示的八字节 IEEE 浮点标准这意味着数字最大可以到 ±x最小到 ±x以开始且包含小数点的数字被解释为小数浮点数
注意以x或开始并包含小数点的数将发生错误以下是 Jscript 中数字的例子
数字 描述 等价十进制数
e e 四个相等的浮点数
e 浮点数
整数
整数虽然看起来是八进制数(以 开头)但是 不是有效的八进制数字所以为十进制数
八进制整数注意它虽然看起来比上面的数只小 但实际数值有很大不同
浮点数虽然以零开头但由于带有小数点所以不是八进制数
错误两个零开头表示为八进制但八进制数不能带有小数部分 N/A (编译错误)
Xff 十六进制整数
xCF 十六进制整数
xe 十六进制整数注意e并不被认为指数
xe 错误十六进制数不能有小数部分 N/A (编译错误)
另外Jscript 包含特殊值数字它们是
NaN (不是数)当对不适当的数据进行数学运算时使用例如字符串或未定义值
正无穷大在 Jscript 中如果一个正数太大的话使用它来表示
负无穷大在 Jscript 中如果一个负数太大的话使用它来表示
正 和负 Jscript 区分正 和负
Boolean 数据类型
尽管字符串和数字类型可以有无数不同的值Boolean 数据类型却只有两个值它们是文字 true 和 falseBoolean 值是一个真值它表示一个状态的有效性(说明该状态为真或假)
脚本中的比较通常得到一个 Boolean 结果考虑下一行 Jscript 代码
y = (x == );
这里要比较变量 x 的值是否与数字 相等如果相等比较的结果为 Boolean 值 true并将其赋给变量 y如果 x 与 不等则比较的结果为 Boolean 值false
Boolean 值在结构控制中尤其有用可以将直接创建 Boolean 值的比较与用使用该 Boolean 值的语句相组合考虑下面的 Jscript 代码范例
if (x == )
z = z + ;
else
x = x + ;
当 Boolean 值为 true 时Jscript 中的 if/else 语句执行一个操作(这样z = z + )而当 Boolean 值为 false 时执行另一个操作(x = x + )
可以使用任意表达式作比较表达式任何值为 null未定义或空字符串的表达式被解释为 false其他任意值的表达式解释为 true例如可以使用如下表达式
if (x = y + z) // 这可能不是想要的结果 – 如下!
注意上面的代码并不检查 x 是否与 y+z 相等因为仅使用了一个等号(赋值)相反的上面的代码将 y+z 赋给变量 x然后检查整个表达式的值是否为零要检查 x 是否与 y+z 相等使用如下代码
if (x == y + z) // 这与上面的代码不同!
有关比较的详细信息请参见控制程序的流程
Null 数据类型
在 Jscript 中数据类型 null 只有一个值null关键字 null 不能用作函数或变量的名称
包含 null 的变量包含无值或无对象换句话说该变量没有保存有效的数字符串Boolean数组或对象可以通过给一个变量赋 null 值来清除变量的内容
请注意在 Jscript 中null 与 不相等(与在 C 和 C++ 中不同)同时应该指出的是Jscript中 typeof 运算符将报告 null 值为 Object 类型而非类型 null这点潜在的混淆是为了向下兼容
Undefined 数据类型
如下情况使返回 undefined 值
对象属性不存在
声明了变量但从未赋值
注意不能通过与 undefined 做比较来测试一个变量是否存在虽然可以检查它的类型是否为undefined在以下的代码范例中假设程序员想测试是否已经声明变量 x
// 这种方法不起作用
if (x == undefined)
// 作某些操作
// 这个方法同样不起作用 必须检查
// 字符串 undefined
if (typeof(x) == undefined)
// 作某些操作
// 这个方法有效
if (typeof(x) == undefined)
// 作某些操作
考虑将 undefined 值与null做比较
someObjectprop == null;
如下情况时比较的结果为 true
如果属性 someObjectprop 包含 null 值
如果属性 someObjectprop 不存在
要检查一个对象属性是否存在可以使用新的 in 运算符
if (prop in someObject)
// someObject 有属性 prop