在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 = 字符串对象