Javascript 数据类型

来源:互联网 发布:c语言常用函数 编辑:程序博客网 时间:2024/06/03 20:24

数据类型

Javascript(JS) 的数据类型可以分为两类:原始类型和对象。

原始类型有6种:

  • 布尔 Boolean. 布尔类型与其他语言中的布尔类型一样,表示逻辑实体,只有两个值 truefalse

  • Null, 表示“空”,与其他语言中的Null一样, 只有一个值 null

  • Undefined, 顾名思义表示 “未定义”, 即一个变量没有被定义类型。因为JS是动态语言,变量的类型是根据赋值类型自动确定的,因此“未定义”也可以理解未赋值。另外也可以用来判断对象中某个属性有没有被定义,函数的参数有没有传入。

  • Number, 表示数字,与其他语言不同,JS 中不区分整数和浮点数,所有的数都是Number, 表示的数据范围是双精度64位二进制格式值的区间。此外,JS的Number类型还包括3个特殊的值:+Infinity-Infinity, NaN. 数据大于范围最大值的为+Infinity,数据小于数据最小值的为-Infinity。计算机计算不出的是NaN

  • String, 与其他语言一样表示字符串。但是在JS中字符串可以用单引号表示,也可以用双引号表示。

  • Symol, 表示符号类型,是ES6新引入的。

对象可以看作是一组属性的集合,包括,标准Object,Array,function,Date,以及ES6中引入的Maps,Sets。

  • 标准object,可以采用字面量的方式定义,即{}, 也可以采用 new Object() 的方式定义。

  • Array,是以索引为键,元素为值对象。可采用字面量的方式定义,即[],也可以采用new Array()的方式定义。

  • function,是一个具有调功能的对象. 使用关键字“function”定义。

  • Date,内建对象,采用new Date() 方式定义一个日期对象。

数据类型判断

采用typeof 运算符判断数据类型:

'''javascripttypeof "a"; // "string"typeof 1; // "number"typeof true; // "boolean"typeof null; // "object"typeof undefined; // "undefined"typeof NaN; // "number"typeof(+Infinity); // "number"typeof({}); // "object"typeof([]); // "object"typeof(function(){}); // "function"'''javascript

typeof 会返回字符串, 两个typeof 连用时会返回 "string".

```javascript    typeof typeof {};// "string"```javascript

数据类型转换

不同数据类型转布尔类型时,只有以下数据是转为false:
null
undefined
""
NaN
0
其他数据会转为true,常见易引起混淆的有:
+Infinity
-Infinity
[]
{}
"false"

String 类型转换为数字类型,可使用内置的Number对象的方法来实现,也可以使用JS内置的全局函数来实现。

```javascript    Number.parseFloat("1.12");//1.12/    Number.parseInt("1.12");//1/    Number("1.12");//1.12/    parseFloat("1.12");//1.12/    parseInt("1.12");//1/``` 

其中Number() 函数与 parseFloat()parseInt() 的区别在于后者转换的是第一个无效字符之前的字符串,而前者是强制转换整个字符串,因此只要字符串中含无效字符,函数就会返回NaN.

``` javascript    parseInt("1.01a");//1    parseFloat("1.01a");//1.01    Number("1.01a");//NaN    parseInt("a1.01")//NaN    parseFloat("a1.01");//NaN``` javascript

数字转换成String 类型, 使用全局函数String() 或者使用Number 对象方法来实现。其中全局函数只能按照十进制转换。

``` javascript(1).toString();//默认按10进制转换为字符串"1"(3).toString(2);//按2进制转换为字符串"11"(13).toString(8);//按8进制转换为字符串"15"(23).toString(16);//按16进制转换成字符串"17"(1.1).toFixed(2);//转换成小数点后保留2为的字符串 "1.10"(11.11).toPrecision(3);//转换成3位数字的字符串"11.1";String(1);///"1"```javascript

数据的传递

JS中所有原始类型的数据都是按值传递,所有对象都是按地址传递。

``` javascriptvar a=0;var b=a;//将a的值复制了一份给bvar c={a:1};var d=c;//将c地址复制一份给d,c和d指向同一片地址内存d.a=2;console.log(c.a);// 2``` javascript
原创粉丝点击