Cocos2d-x学习笔记:完全掌握JS API与游戏项目开发 (未来书库,触控未来官方教材)
上QQ阅读APP看书,第一时间看更新

2.5 JavaScript数据类型

数据类型在任何计算机语言中都比较重要,JavaScript语言也是面向对象的。

2.5.1 数据类型

JavaScript数据类型可以分为数值类型、布尔类型、字符串类型、对象类型和数组等类型。

1.数值类型

数值类型包括整数和浮点数。整数可以是十进制、十六进制和八进制数。十进制数由一串数字序列组成,它的第一个数字不能为0;如果为0,则表示它是一个八进制数;而如果开头为0x,则表示它为一个十六进制数。

浮点数必须包含一个数字、一个小数点或“e”(或“E”)。浮点数示例如下:

3.1415、-3.1E12、0.1e12和2E-12。

2.布尔类型

布尔类型有两种值:true和false。

3.字符串类型

字符串是若干封装在双括号(")或单括号(')内的字符。字符串示例如下:

    "fish"
    'fish'
    "5467"
    "a line"

4.对象类型

用new生成一个新的对象,var currentDay = new Date()。

5.数组类型

数组类型Array也是一个对象,可以通过var arr = new Array(3)语句创建。其中3是数组的长度,我们可以通过arr.length属性取得数组的长度。

2.5.2 数据类型字面量

数据类型字面量(Literals)是在程序中使用的字符表示数据的方式。例如,常见的型字面量如下:

    12                                    // 12整数
    1.2                                   // 1.2浮点数
    "hello world"                       // 一个内容为hello world的字符串
    true                                  // 表示"真"布尔类型值
    false                               // 表示"假"布尔类型值
    {height:10,width:20}                // 表示一个对象
    [1,2,3,4,5]                         // 表示数组对象
    null                                  // 表示不存在的对象

2.5.3 数据类型转换

JavaScript提供了类型转换函数,这些转换包括转换成字符串、转换成数字和强制类型转换。

1.转换成字符串

我们可以将布尔类型和数值类型转换为字符串类型,布尔类型和数值类型都以toString()函数实现转换。示例代码如下:

    var found = false;
    console.log(found.toString());               //输出false
    
    var num1 = 10;
    var num2 = 10.0;
    console.log(num1.toString());               //输出 "10"
    console.log(num2.toString());               //输出 "10"
    
    console.log(num2.toString(2));              //输出二进制形式  "1010"
    console.log(num2.toString(8));              //输出八进制形式  "12"
    console.log(num2.toString(16));             //输出十六进制形式  "A"

提示 在面向对象分析和设计过程中,toString()应该叫做“方法”,而不是“函数”,方法要有主体,而函数没有主体。但是为了尊重JavaScript习惯,本书还是把类似toString()的方法称为函数。

2.转换成数字

把非数字的原始值转换成数字的函数:parseInt()和parseFloat()。示例代码如下:

    var num3 = parseInt("12345red");             //返回 12345
    var num4 = parseInt("0xA");                    //返回 10
    var num5 = parseInt("56.9");                   //返回 56
    var num6 = parseInt("red");                    //返回 NaN                            ①
    
    var num6 = parseInt("10", 2);                //返回 二进制数2                      ②
    var num7 = parseInt("10", 8);                //返回 八进制数8
    var num8 = parseInt("10", 10);               //返回 十进制数10
    var num9 = parseInt("AF", 16);               //返回 十六进制数175
    
    var num10 = parseFloat("12345red");          //返回 12345
    var num11 = parseFloat("0xA");               //返回 NaN                            ③
    var num12 = parseFloat("11.2");              //返回 11.2
    var num13 = parseFloat("11.22.33");          //返回 11.22                          ④
    var num14 = parseFloat("0102");              //返回 102
    var num15 = parseFloat("red");               //返回 NaN                            ⑤

上述代码第①、③和⑤行返回NaN表示无法转换有效的数值。第②行代码的parseInt函数有两个参数,第二个参数是基数,基数表示数值的进制。

3.强制类型转换

我们还可以使用强制类型转换来处理转换值的类型,JavaScript提供了三种强制类型转换函数如下:


□Boolean(value):把给定的值转换成布尔型。

□Number(value):把给定的值转换成数值。

□String(value):把给定的值转换成字符串。


使用Boolean函数的示例代码如下:

    var b1 = Boolean("");            //false - 空字符串                              ①
    var b1 = Boolean("hello");       //true - 非空字符串                             ②
    var b1 = Boolean(50);            //true - 非零数字                               ③
    var b1 = Boolean(null);          //false - null                                  ④
    var b1 = Boolean(0);             //false - 零                                    ⑤
    var b1 = Boolean({name: 'tony'}); //true - 对象                                   ⑥

Boolean函数可以转换任何类型为布尔类型,其中第①行的""值、第④行的null值和第④行的0值转换后为false,第②行的"hello"值、第③行的50值和第⑥行的对象值转换后为true。

使用Number函数的示例代码如下:

    var n1 = Number(false);             //0
    var n1 = Number(true);              //1
    var n1 = Number(undefined);       //NaN                                        ①
    var n1 = Number(null);              //0                                          ②
    var n1 = Number("1.2");             //1.2
    var n1 = Number("12");              //12
    var n1 = Number("1.2.3");         //NaN                                        ③
    var n1 = Number({name: 'tony'});  //NaN                                        ④
    var n1 = Number(50);                //50

Number函数可以转换任何类型为数值类型,其中第①行的undefined值、第③行的"1.2.3"值和第④行的对象值转换后为NaN,第②行的null值转换后为0。

提示 null表示无值,而undefined表示一个未声明的变量,或已声明但没有赋值的变量,或一个并不存在的对象。

使用String函数的示例代码如下:

    var s1 = String(null);                //"null"
    var s1 = String({name: 'tony'});      //"[object Object]"

String函数可以转换任何类型为字符串类型,其中对象情况比较复杂。