一、JavaScript中的数据类型
1.数值型(Number)
分类:整数;浮点数
所有数值都以双精度浮点型来表示,双精度浮点类型可以表示以-2∧53到2∧53的整数,也可以表示为±1.7976∧308的最大值和±2.2250*10∧(-308)的浮点数。
数值型 | 举例 |
十进制值 | 12,1.2,-23,.22e3,-1.3e3,3.E-2, |
十六进制值 | 0x0,0xABCDEF,0x1a2b3c |
八进制值 | 00,0123,0241234 |
特殊值 | Infinity,NaN |
Infinity:当一个数值或数值表达式的值超出了可表示的最大范围,将被赋值为Infinity,可以有无穷大Infinity也可有无穷小-Infinity
- 整数型
<script>
//十进制整数
var num1 = 55;
console.log(num1); //结果为55
//八进制整数
var num2 = 070;
console.log(num2); //结果为56
var num3 = 079;
console.log(num3); //结果为79(无效的八进制数值)
var num4 = 08;
console.log(num4); //结果为8(无效的八进制数值)
//十六进制
var num5 = 0xA;
console.log(num5); //结果为10
var num6 = 0x1f;
console.log(num6); //结果为31
</script>
在进行计算时,所有的八进制和十六进制数值最终都将被转换成十进制数值
- 浮点数值
<script>
var num1 = 1.1;
console.log(num1); //结果为1.1
var num2 = 0.1;
console.log(num2); //结果为0.1
var num3 = .1;
console.log(num3); //结果为0.1
var num4 = 1.;
console.log(num4); //结果为1(小数点后面没有数字)
var num5 = 10.0
console.log(num5); //结果为10(整数)
var num6 = 3.125e7;
console.log(num6); //结果为31250000
</script>
- NaN:非数值(Not a Number)
用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了),当一个undefined表达式的结果为数值型数据时,该数值型就是NaN值,NaN是唯一一个不能和自身比较的值
<script>
console.log(NaN==NaN); //结果为false
</script>
2.字符串型(String)
字符串可以由双引号(")或单引号(’)表示:
<script>
var str1 = "mango";
console.log(str1); //mango
var str2 = 'mango';
console.log(str2); //mango
var str3 = 'mango";
console.log(str3); //报错!(左右引号必须一致)
</script>
- 字符字面量(转义字符)
字面量 | 含义 |
\n | 换行 |
\t | 制表 |
\b | 空格 |
\r | 回车 |
\f | 进纸 |
\ | 斜杠 |
\’ | 单引号(‘),在用单引号标识的字符串中使用。例如:‘he said,\‘hey.\’ ’ |
\" | 双引号(”),在用单引号标识的字符串中使用。"he said,\“hey.\” " |
3.Boolean类型
- Boolean类型只有两个字面值:true和false,这两个值与数字值不是一回事,因此true不一定等于1,而false也不一定等于0。
- Boolean类型的字面值true和false是区分大小写的。也就是说,True和False(以及其他的混合大小写形式)都不是Boolean值,只是标识符。
4.undefined类型
undefined类型只有一个值-----undefined
- 在使用var声明变量但未对其初始化时,这个变量的值就为undefined
<script>
var message;
console.log(message == undefined); //结果为true
</script>
声明变量未赋值与未声明变量的返回结果也是不同的
<script>
var message;//声明变量未赋值
//没有声明变量
//var age;
console.log(message); //结果为undefined;
console.log(age); //报错!!
</script>
5.Null类型
Null类型只有一个值-----null
null值表示一个空对象指针,这也正是使用typeof操作符检测null值是会返回“object”的原因。
6.Object类型
ECMAScript中的对象其实就是一组数据和功能的集合。创建对象:var obj = new Object();
Object的每个实例都具有下列属性和方法:
- constructor:保存着用于创建当前对象的函数。
- hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例原型中)是否存在。
- isPrototypeOf(Object):用于检查传入的对象是否传入对象的原型。
- propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句来枚举。
- toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
- toString():返回对象字符串表示。
- valueOf():返回对象的字符串,数值或布尔值表示。
二:JavaScript中的数据类型转换
1.转换为number类型
- Number()函数的转换规则
1.如果是Boolean值,true和false将分别转换为1和0。
2.如果是数字值,只是简单的传入和传出。
3.如果是null值,返回0。
4.如果是undefined,返回NaN。
5.如果是字符串,遵循下列规则:
- 如果字符串中值包含数字,则将其转换为十进制数值
- 如果字符串中包含有效的十六进制格式,则将其转换为相同大小的十进制数值
- 如果字符串是空的,则将其转换为0
- 如果字符串中包含上述格式之外的字符,则将其转换为NaN
<script>
var num1 = Number(true);
console.log(num1); //1
var num2 = Number("23");
console.log(num2); //23
var num3 = Number(null);
console.log(num3); //0
var num4 = Number(undefined);
console.log(num4); //NaN
var num5 = Number("00011");
console.log(num5); //11
var num6 = Number("0xf");
console.log(num6); //15
var num7 = Number("");
console.log(num7); //0
</script>
- parseInt()函数转换规则:
<script>
var num1 = parseInt("1234blue");
console.log(num1); //1234
var num2 = parseInt("");
console.log(num2); //NaN
var num3 = parseInt("0xA");
console.log(num3); //10(十六进制数)
var num4 = parseInt(22.5);
console.log(num4); //22
var num5 = parseInt("070");
console.log(num5); //ECMAScript认为是56(八进制数) ECMAScript认为是70(十进制数)
var num6 = parseInt("70");
console.log(num6); //70(十进制数)
var num7 = parseInt("0xf");
console.log(num7); //15(十六进制数)
</script>
parseInt()函数当使用两个参数时:第二个参数即转换时使用的基数
<script>
var num1 = parseInt("0xAF",16);
console.log(num1); //175
//如果指定了16作为第二个参数,字符串可以不带前面的"0x"
var num2 = parseInt("AF",16);
console.log(num2); //175
var num3 = parseInt("AF");//没有参数也没有前缀默认为字符串
console.log(num3); //NaN
var num4 = parseInt("10",2);
console.log(num4); //2
var num5 = parseInt("10",8);
console.log(num5); //8
var num6 = parseInt("10",10);
console.log(num6); //10
var num7 = parseInt("10",16);
console.log(num7); //16
</script>
- parseFloat()函数只解析十进制值,因此它没有第二个参数
<script>
var num1 = parseFloat("1234abcd");
console.log(num1); //1234
var num2 = parseFloat("0xF");
console.log(num2); //0
var num3 = parseFloat("22.5");
console.log(num3); //22.5
var num4 = parseFloat("22.34.5");
console.log(num4); //22.34
var num5 = parseFloat("0809.5");
console.log(num5); //809.5
var num6 = parseFloat("3.125e7");
console.log(num6); //31250000
</script>
2.转换为字符串
- toString():数值,布尔值,对象和字符串值都有toString()方法。但null和undefined值没有这个方法
在调用toString()方法时可以传递一个参数,输出数值的基数。
<script>
var num = 10;
console.log(num.toString()); //"10"
console.log(num.toString(2)); //"1010"
console.log(num.toString(8)); //"12"
console.log(num.toString(10)); //"10"
console.log(num.toString(16)); //"a"
</script>
- String():在不知道转换的值是不是null或undefined的情况下,可以使用String(),这个函数可以将任何类型的值转换为字符串
<script>
var value1 = 10;
var value2 = true;
var value3 = null;
var value4;
console.log(String(value1));//"10"
console.log(String(value2));//"true"
console.log(String(value3));//"null"
console.log(String(value4));//"undefined"
</script>
4.转换为布尔类型
- 数字转换为布尔值,除了0和NaN,其余都是true
- 字符串转换布尔值,除了空字符串
""
,其余都是true - null和undefined转换为false
- 对象转换为true