ECMAScript值类型

ECMAScript值类型分为原始类型和引用类型。函数

ECMAScript原始类型(primitive type)有5种:Undefined、Null、Boolean、Number 和 String。测试

typeof 运算符

typeof 运算符有一个参数,即要检查的变量或值。例如:spa

var sTemp = "test string";
alert (typeof sTemp);    //输出 "string"
alert (typeof 86);    //输出 "number"

对变量或值调用 typeof 运算符将返回下列值之一:code

  • undefined - 若是变量是 Undefined 类型的
  • boolean - 若是变量是 Boolean 类型的
  • number - 若是变量是 Number 类型的
  • string - 若是变量是 String 类型的
  • object - 若是变量是一种引用类型或 Null 类型的

注释:您也许会问,为何 typeof 运算符对于 null 值会返回 "Object"。这其实是 JavaScript 最初实现中的一个错误,而后被 ECMAScript 沿用了。如今,null 被认为是对象的占位符,从而解释了这一矛盾,但从技术上来讲,它仍然是原始值。对象

Undefined 类型

如前所述,Undefined 类型只有一个值,即 undefined。当声明的变量未初始化时,该变量的默认值是 undefined。教程

var oTemp;

提示:值 undefined 并不一样于未定义的值。可是,typeof 运算符并不真正区分这两种值。考虑下面的代码:ip

var oTemp;

alert(typeof oTemp);  //输出 "undefined"
alert(typeof oTemp2);  //输出 "undefined"

前面的代码对两个变量输出的都是 "undefined",即便只有变量 oTemp2 从未被声明过。若是对 oTemp2 使用除 typeof 以外的其余运算符的话,会引发错误,由于其余运算符只能用于已声明的变量上。字符串

例如,下面的代码将引起错误:string

var oTemp;
alert(oTemp2 == undefined);

当函数无明确返回值时,返回的也是值 "undefined",以下所示:it

function testFunc() {
}

alert(testFunc() == undefined);  //输出 "true"

特殊的 Number 值

几个特殊值也被定义为 Number 类型。前两个是 Number.MAX_VALUE 和 Number.MIN_VALUE,它们定义了 Number 值集合的外边界。全部 ECMAScript 数都必须在这两个值之间。不过计算生成的数值结果能够不落在这两个值之间。

当计算生成的数大于 Number.MAX_VALUE 时,它将被赋予值 Number.POSITIVE_INFINITY,意味着再也不有数字值。一样,生成的数值小于 Number.MIN_VALUE 的计算也会被赋予值 Number.NEGATIVE_INFINITY,也意味着再也不有数字值。若是计算返回的是无穷大值,那么生成的结果不能再用于其余计算。

事实上,有专门的值表示无穷大,(如你猜到的)即 Infinity。Number.POSITIVE_INFINITY 的值为 Infinity。Number.NEGATIVE_INFINITY 的值为 -Infinity。

因为无穷大数能够是正数也能够是负数,因此可用一个方法判断一个数是不是有穷的(而不是单独测试每一个无穷数)。能够对任何数调用 isFinite() 方法,以确保该数不是无穷大。例如:

var iResult = iNum * some_really_large_number;

 {
    alert("finite");
}

else {
    alert("infinite");
}if (isFinite(iResult))

最后一个特殊值是 NaN,表示非数(Not a Number)。NaN 是个奇怪的特殊值。通常说来,这种状况发生在类型(String、Boolean 等)转换失败时。例如,要把单词 blue 转换成数值就会失败,由于没有与之等价的数值。与无穷大同样,NaN 也不能用于算术计算。NaN 的另外一个奇特之处在于,它与自身不相等,这意味着下面的代码将返回 false:

alert(NaN == NaN);  //输出 "false"

出于这个缘由,不推荐使用 NaN 值自己。函数 isNaN() 会作得至关好:

alert(isNaN("blue"));  //输出 "true"
alert(isNaN("666"));  //输出 "false"

String 类型

String 类型的独特之处在于,它是惟一没有固定大小的原始类型。能够用字符串存储 0 或更多的 Unicode 字符,有 16 位整数表示(Unicode 是一种国际字符集,本教程后面将讨论它)。

字符串中每一个字符都有特定的位置,首字符从位置 0 开始,第二个字符在位置 1,依此类推。这意味着字符串中的最后一个字符的位置必定是字符串的长度减 1:

字符串的长度和字符的位置

字符串字面量是由双引号(")或单引号(')声明的。而 Java 则是用双引号声明字符串,用单引号声明字符。可是因为 ECMAScript 没有字符类型,因此可以使用这两种表示法中的任何一种。例如,下面的两行代码都有效:

var sColor1 = "red";
var sColor2 = 'red';

 

摘自:http://www.w3school.com.cn/js/pro_js_typeconversion.asp

相关文章
相关标签/搜索