一、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

特殊值

InfinityNaN

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