5.JavaScript变量类型及数据类型转换
五、变量的类型
5.1 概述
基本类型5种
number 数字类型
string 字符串类型
undefined undefined类型,变量未定义时的值,这个值自己是一种类型
boolean 布尔类型,仅有两个值true 和 false,讲if语句时我们细说
null null类型,这个值自己是一种类型,遇见时我们细说
引用类型
讲到再说
至于什么是引用类型,我们到时候见到再说。
5.2 typeof关键字
这个关键字,用来检测一个变量的类型。
|
1 var a = 100; 2 console.log(typeof a); |
5.3 number类型
所有的数字都是number类型
|
1 <script type="text/javascript"> 2 //下面定义的变量都是number类型 3 var a = 100; 4 var b = 234243245345; 5 var c = -345345435435; 6 var d = 345.3245234; 7 var e = .5e6; 8 var f = 0xff; 9 var g = 017; 10 var h = Infinity; 11 var i = NaN; 12 13 console.log(typeof a); 14 console.log(typeof b); 15 console.log(typeof c); 16 console.log(typeof d); 17 console.log(typeof e); 18 console.log(typeof f); 19 console.log(typeof g); 20 console.log(typeof h); 21 console.log(typeof i); 22 </script> |

JS中所有的数字都是number类型的,不在细分为整形int、浮点型float这些乱七八糟的东西。
number类型的东西:所有数字(不分正负、不分整浮、不分大小、不分进制)、Infinity、NaN。
5.4 string类型
|
1 var m1 = "哈哈"; 2 var m2 = "123"; 3 var m3 = ""; //空字符串,也是字符串 4 console.log(typeof m1); 5 console.log(typeof m2); 6 console.log(typeof m3); |

这个变量是什么类型,和赋的值有关系,而和定义的时候是没有关系的。定义的时候,都是用var关键字定义的。
|
1 var mm = 123; //number 2 console.log(typeof mm); 3 mm = "哈哈"; //改为string是合法的 4 console.log(typeof mm); |

我们说js这个语言叫做动态数据类型,原因就在这里,就是赋值的时候就决定这个变量的类型了。甚至可以改变这个变量的值,为其他类型的值。变量的类型是自动检测的,而不是人规定的。
5.5 undefined类型
之前说过,一个变量只var过,没有赋初值,它的默认值是undefined;
这个undefined是自成一家,自己是自己的类型,它的类型也叫作undefined。undefined类型的值就只有undefined一个。
|
1 var nn; //我只定义了,没有赋初值,所以就是undefined,类型也是undefined 2 console.log(nn); 3 console.log(typeof nn); |

5.6 加号
加号是一个运算符,我们先提前说一下。
加号两边都是数字的时候,那么就是数学加法;两边不都是数字的时候,那么就是连字符,结果是字符串。
|
1 console.log("你" + "好"); |

|
1 console.log(1 + "2"); |

,因为2被引号引起来了,所以就是字符串,所以+就是连字符
|
1 var a = "1"; 2 var b = "2"; 3 console.log(a + b); |

|
1 var a = 1; 2 var b = 2; 3 console.log("a" + b); //a2 |

多个加号,从左算到右:
|
1 var a = 1; 2 var b = 2; 3 var c = 3; 4 console.log("a" + a + b + "c"); |

|
1 var a = 1; 2 var b = 2; 3 var c = 3; 4 console.log(a + b + "c"); |

六、变量类型的转换
5.1 string → number
先来学习一个语句,这个语句和alert差不多,也是弹窗,弹的是输入框:
|
1 prompt("请输入你的电话","139"); |

这些小功能,就叫做程序给我们提供的API,每个API都有自己不同的语法。
|
1 prompt(“提示文本”,”默认值”); |
默认值可以省略。
可以把用户输入的值,存入变量:
|
1 var a = prompt("请输入你的电话","139"); 2 alert("哈哈,你输入的电话是" + a); |
用prompt接收的任何东西都是字符串,哪怕用户输入了一个数字,也是字符串的数字。
有一些方法可以将内存中表示一个数字的字符串转换为对应的数字
parseInt()和parseFloat()。
parseInt就是将一个string转为一个整数,不四舍五入,直接截取整数部分。如果这个string有乱七八糟的东西,那么就截取前面数字部分。
|
1 var a = "123"; 2 var b = parseInt(a); //parseInt就把字符串123转为数字123了 3 console.log(b); 4 console.log(typeof b); |

下面的实例结果都是123,最后一个是-123:
|
1 parseInt("123") //123 2 parseInt("123.6") //123 3 parseInt("123年都会很爱你") //123 4 parseInt("123年11月") //123 5 parseInt("123px") //123 6 parseInt("-123.99999999") //-123 |

parseInt()不仅仅能够进行一个转为整数,更能进行一个进制的转换,把任何进制的数字,都换为10进制。
进制和要转换的字符串,用逗号隔开。
下面的运算结果都是15:
|
1 parseInt(15,10) 2 parseInt(17,8) 3 parseInt(1111,2) 4 parseInt("0xf",16) 5 parseInt("f",16) 6 parseInt(16,9) 7 parseInt("15e6",10) 8 parseInt("15*6",10) |
parseInt如果不能转,那么就返回NaN
|
1 parseInt("Hello", 8); 2 parseInt("546", 2); 3 parseInt("三百六十五"); |
得到NaN的方法又多了一种,上午讲的是6/0得到Infinity。0/0得到NaN。
parseFloat就是将字符串转为浮点数
尽可能的将一个字符串转为浮点数,浮点数之后如果有乱七八糟的内容,直接舍弃。
|
1 <script type="text/javascript"> 2 var a = "123.67.88"; 3 var b = parseFloat(a); 4 console.log(b); 5 </script> |

也就是说,数字类型都是number,不分整数和浮点数,但是转换的时候分。
5.2 number → string
将一个数字,与一个空字符串进行连字符运算,那么就是自动转为字符串了。
|
1 var a = 123; 2 var b = a + ""; 3 console.log(b); 4 console.log(typeof b); |

七、数学运算符
运算符叫做operator,也可以叫做操作符。运算符有很多种,一元运算符、二元运算符;数学运算符、逻辑运算符……我们今天先学习数学运算符,比较简单
+ 加法
- 减法
* 乘法
/ 除法
% 取余数
( ) 括号
下面的结果都是3:
|
1 console.log(1 + 2); 2 console.log(8 - 5); 3 console.log(1.5 * 2); 4 console.log(12 / 4); 5 console.log(13 % 5); //得几不重要,要的是余数 |

取余数这个运算,实际上也是除,要的是余数:
|
1 //取余数 2 console.log(12 % 3); //0 3 console.log(121 % 11); //0 4 console.log(5 % 8); //5 5 console.log(8 % 5); //3 6 console.log(5 % 5); //0 |
默认的计算顺序,先乘除,后加减。乘除取余是平级,先遇见谁,就算谁。
|
1 console.log(1 + 2 * 3); //7 2 console.log(1 + 2 * 3 % 3); //1 3 console.log(1 + 2 % 3 * 3); //7 |
我们可以用小括号来改变计算先后顺序,注意没有中括号和大括号,一律用小括号。
|
1 var a = 4 * (3 + (1 + 2) * 3); 2 alert(a); |
特殊的数字运算,很多公司在考,考你对面试的重视程度,因为这个知识实战中一辈子用不到。
JS中的数学运算符,就这么几个,如果你学过C,那么我提醒你,没有乘方^。如果你学过java那么我提醒你,没有取整除法\。
乘法怎么算?

|
1 Math.pow(3,4); |
这是一个新的API,记住就行了,后面的课程将会告诉你,Math是一个内置对象,pow是它的一个方法。
Math就是数学,pow就是power乘方。

|
1 var a = Math.pow(3,2 + Math.pow(3,6)); |
根号就是
|
1 Math.sqrt(81); |
今天遇见的所有API:
alert("哈哈");
prompt("请输入数字","默认值");
console.log("哈哈");
parseInt("123",8);
parseFloat("123");
Math.pow(3,4);
Math.sqrt(81);

浙公网安备 33010602011771号