在JavaScript中有几种基础数据类型,也可以通过这几种基础数据类型来构成复杂一些的数据类型。
一、字符串类型
字符串类型(string):由双引号或单引号构成的数据类型,如:”aaa”,’bbb’
数据转换
 string" class="reference-link" style="color: rgb(31, 26, 23);">1.number -> string
1.构造函数转换
- console.log(String(123456789));
 - console.log(new String(123456789).valueOf());
 
2.内部js引擎转换
- console.log(typeof ("" + 123456));
 
输出结果:string
3.toString()
- console.log(typeof (123456).toString());
 - console.log(typeof 123456..toString());
 
输出结果:string
2.boolean -> string
1.构造函数转换
- console.log(typeof String(false));
 
输出结果:string
3.object -> string
- var o = {
 -     k1:"v1",
 -     k2:333
 - }
 - console.log(JSON.stringify(o));
 
输出结果:{"k1":"v1","k2":333}
二、数字类型
数字类型(number):分为整数(如:12,15)和浮点数(如:12.5)
数据转换
 number" class="reference-link" style="color: rgb(31, 26, 23);">string -> number
1.构造函数转换
- console.log(Number("123")); // 123
 - console.log(typeof Number("123")); // number
 
2.通过parseInt,parseFloat方式
- console.log(parseInt("332255"), parseFloat("8899.322"));
 
输出结果:332255 8899.322
构造函数转换与parseInt区别
- console.log(Number(""), parseInt(""));
 
输出结果:0 NaN,说明构造函数将空的字符串转换成零,而parseInt则将空字符串当作不存在。
- console.log(Number(false), parseInt(false));
 - console.log(Number(null), parseInt(null));
 - console.log(Number(undefined), parseInt(undefined));
 
输出结果前两个都是:0 NaN,第三个输出:NaN NaN
三、布尔类型
布尔类型(boolean)只有两个值,分别为true和false
数据转换
 boolean" class="reference-link" style="color: rgb(31, 26, 23);">1.string -> boolean
1.引擎的转换
- var s = "";
 - // 这里会把s空的字符串("")转换成false
 - // 更类似于重新在内部创建了一个变量,把s变成false;var s2 = false;
 - if(s) {
 -     console.log("true");
 - }else{
 -     console.log("false")
 - }
 
运行结果:false
2.构造函数的转换
- var s = "";
 - console.log(new Boolean(s));
 
输出结果:[Boolean: false]
3.!!操作
- var s = "";
 - console.log(!!s);
 
输出结果:false
 boolean" class="reference-link" style="color: rgb(31, 26, 23);">2.number -> boolean
1.引擎的转换
- var s = 0;
 - if(s) { // 0 -> false
 -     console.log("true");
 - }else{
 -     console.log("false")
 - }
 
输出结果:false
2.构造函数转换
- var s = 0;
 - console.log(new Boolean(s));
 
输出结果:[Boolean: false]
3.!!操作
- var s = 0;
 - console.log(!!s);
 
输出结果:false
四、特殊类型
特殊类型:常见的有null表示空;undefined表示未定义类型,未赋值类型;object类型,其它自定义类型都继承自object类型,它内部还有一些object类,比如:Array,function
- let o1 = null;
 - console.log(o1); // null
 - let me;
 - console.log(me); // undefined
 
五、类型判断
可以通过一个命令(typeof)测试出一个数据的类型
- typeof "fdsafdsa" // string
 - typeof 15 // number
 - typeof false // boolean
 - typeof undefined // undefined
 - typeof abc // undefined
 - typeof {name: "张三"} // object
 - typeof null // object
 - typeof function(){} // function
 
示例
- function add(a,b) {
 -     if(typeof a === "number" && typeof b === "number") {
 -         console.log(a+b);
 -     }else{
 -         console.log("a和b必须是number类型")
 -     }
 - }
 - add(12,8);
 
这里使用typeof判断,a和b都是数字类型的时候才会相加,否则输出a和b必须是number类型。
六、数据基础类型和对象的类型
1.数据基础类型(纯粹的数据)
- 12 // number
 - "abc" // string
 - false // boolean
 - true // boolean
 - null
 - undefined
 
2.对象的类型
在编程当中,所有的对象都具备属性和方法;而纯粹的数据是不具备属性和方法的;
- console.log(); // 其中console是本身的对象,log是对象的方法
 - var o = new Number(12); // 有类型的对象,类型是Number
 - var o2 = new String("abc"); // 数据:"abc" 类型:String   "abc" + String = 字符串对象