Javascript 数据类型

数据类型

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 运算符判断数据类型:

'''javascript
typeof "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 无法区分 null,array 和 object

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

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

采用Object.prototype.toString.call() 精确判断

Object.prototype.toString.call({})
"[object Object]"

Object.prototype.toString.call(new FormData())
"[object FormData]"

Object.prototype.toString.call(()=>{})
"[object Function]"

Object.prototype.toString.call([])  
"[object Array]"

Object.prototype.toString.call("")
"[object String]"

Object.prototype.toString.call(1)
"[object Number]"

Object.prototype.toString.call(NaN)
"[object Number]"

Object.prototype.toString.call(+Infinity)
"[object Number]"

Object.prototype.toString.call(true)
"[object Boolean]"

Object.prototype.toString.call(null)
"[object Null]"

Object.prototype.toString.call(undefined)
"[object Undefined]"

Object.prototype.toString 可以精确区分 array, object,null, 甚至 formData

数据类型转换

不同数据类型转布尔类型时,只有以下数据是转为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"
""+1; //"1"
1+""; //"1"
```javascript

数据的传递

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

```javascript
var a=0;
var b=a;//将a的值复制了一份给b
    
var c={a:1};
var d=c;//将c地址复制一份给d,c和d指向同一片地址内存
d.a=2;
console.log(c.a);// 2
```javascript
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值