1. 基本数据类型
1.1 Number
数值类型
在javascript中无论是整数还是小数都属于数值类型
1.2 String
字符串类型
在javascript中无论是用单引还是双引括起来的都是字符串类型
1.3 Boolean
布尔类型
在javascript中布尔类型比较特殊,只有 true
和 false
1.4 Undefined
未定义类型
在javascript中未定义类型比较特殊,只有一个取值 undefined
1.5 Null
空类型
2. 复杂数据类型(也叫引用数据类型)
Object 对象类型是最复杂的数据类型,又可以分成三个子类型。
- 对象(Object)
- 数组(Array)
- 函数(Function)
3. ES6新增一种数据类型(Symbol )
后期会单独整理ES6笔记,这里不过多记录
4. typeof
运算符
在javascript中为了方便我们检测某一种数据是属于哪一种数据类型的, javascript提供了一个名称叫做 typeof
的操作符(还有一种写法 typeof()
,自己随意选择)
var num;
num = 100;
// 利用typeof检测num这个常量是属于哪一种数据类型的, 并且将检测的结果保存到res1这个变量中
var res1 = typeof num
console.log(res1); // number
var res2 = typeof true
console.log(res2); // boolean
var res3 = typeof 'Hello'
console.log(res3); // string
var res4 = typeof undefined
console.log(res4); // undefined
// 由于没有给v这个变量进行初始化, 所以这个变量中保存的数据默认是undefined
var res5 = typeof v;
console.log(res5); // undefined
//null的类型是object,这是由于历史原因造成的。1995年的 JavaScript 语言第一版,只设计了五种数据类型(对象、整数、浮点数、字符串和布尔值),没考虑null,只把它当作object的一种特殊值。后来null独立出来,作为一种单独的数据类型,为了兼容以前的代码,typeof null返回object就没法改变了。
var res6 = typeof null
console.log(res6); // object
5. 数据类型转换
5.1 转换成字符串类型
如果想将四种基本数据类型转成字符串类型,通常有以下几种方法
-
String()
方法可以将任意类型的值转成字符串var res1 = typeof String(123) console.log(res1); // string var res2 = typeof String(null) console.log(res2); // string var res3 = typeof String(undefined) console.log(res3); // string var res4 = typeof String(true) console.log(res4); // string
-
可以通过
.toString()
方法来转成字符串// toString()方法 var val1 = 123; var res6 = val1.toString() console.log(typeof res6); // string var val2 = true; var res7 = val2.toString() console.log(typeof res7); // string // 这里需要注意的是toString是Object对象内置的方法,null和undefined是没有的。 var val3 = undefined; var res8 = val3.toString() console.log(typeof res8); // 报错 Cannot read property 'toString' of null var val4 = null; var res8 = val4.toString() console.log(typeof res8); // 报错 Cannot read property 'toString' of null
-
通过
+
运算符也可以转成字符串(隐士类型转换)var num = 10; var str = "boy"; // 这里的 + 是字符串的拼接 底层的本质其实就是调用String()函数 var res5 = num + str; console.log(res5); // 10boy console.log(typeof res5); // string
5.2 转换成数值类型
如果想将四种基本数据类型转成字符串类型,通常有以下几种方法
-
通过
Number()
方法来转换// 将String类型转换为数值类型 // 如果字符串中都是数值, 那么就正常转换 var str1 = "456"; var res1 = Number(str1); console.log(res1); // 456 console.log(typeof res1); // number // 如果是空字符串或者空格字符串,那么转换成0 var str2 = " "; var res2 = Number(str2); console.log(res2); // 0 console.log(typeof res2); // number // 如果字符串不都是字符串,那么转换成NaN var str = "10boy"; var res = Number(str); console.log(res); // NaN console.log(typeof res); // number
// 将布尔类型转换为数值类型 // 如果布尔类型为True那么就转换成1 var result1 = Number(true) console.log(result1); // 1 // 如果布尔类型为False那么就转换成0 var result2 = Number(false) console.log(result2); // 0
// 将null转换成数字 var result3 = Number(null) console.log(result3); // 0
// 将undefined转换成数字 var result4 = Number(undefined) console.log(result4); // NaN
NaN
是 JavaScript 的特殊值,表示“非数字”(Not a Number),它的数据类型依然属于Number
,使用typeof
运算符可以看得很清楚。NaN
不等于任何值,包括它本身。 -
可以通过运算符的
+
号和-
号来转换(隐士类型转换)// 虽然通过+/-都可以将其它类型转换为数值类型, 但是-会改变数值的正负性 // +/-底层本质上就是调用了Number函数 var num = +"456"; console.log(num); // 456 console.log(typeof num); // number var num1 = +""; console.log(num1); // 0 console.log(typeof num1); // number var num2 = +" "; console.log(num2); // 0 console.log(typeof num2); // number var num3 = +"abc"; console.log(num3); // NaN console.log(typeof num3); // number var flag1 = true; console.log(+flag1); // 1 var flag2 = false; console.log(+flag2); // 0 console.log(+null); // 0 console.log(typeof +null); // number console.log(+undefined); // NaN console.log(typeof +undefined); // number var str1 = "123"; var str2 = "456"; var res1 = str2 - str1; var res2 = str1 + str2 console.log(res1); // 333 console.log(typeof res1); // number
-
可以通过
parseInt()
和parseFloat()
方法来转换// 注意点: parseInt/parseFloat都会从左至右的提取数值, 一旦遇到非数值就会立即停止 // 停止的时候如何还没有提取到数值, 那么就返回NaN var str = "123abc"; var res = parseInt(str); console.log(res); // 123 console.log(typeof res); // number var str1 = "add123abc"; var res1 = parseInt(str1); console.log(res1); // NaN console.log(typeof res1); // number var str2 = "12.a314"; // var res2 = parseInt(str2); // 12 var res2 = parseFloat(str2); // 12 console.log(res2); // 12 console.log(typeof res2); // number var str3 = "13.14abc"; var res3 = parseFloat(str3); console.log(res3); // 13.14 console.log(typeof res3); // number // 注意点: parseInt/parseFloat都会将传入的数据当做字符串来处理 var res4 = parseInt(true); console.log(res4); // NaN var res5 = parseInt(undefined); console.log(res5); // NaN var res6 = parseInt(null); console.log(res6); // NaN5.3 转换成布尔类型
5.3 转换成布尔类型
在JavaScript中如果想将基本数据类型转换为布尔类型, 那么只需要调用 Boolean()
方法
// 除了空字符串、0、null、undefined、NaN是false其余都是true
var str1 = 'abc'
var res1 = Boolean(str1);
console.log(res1); // true
var str2 = ''
var res2 = Boolean(str2);
console.log(res2); // false
var str3 = null
var res3 = Boolean(str3);
console.log(res3); // false
var str4 = undefined
var res4 = Boolean(str4);
console.log(res4); // false
var str5 = NaN
var res5 = Boolean(str5);
console.log(res5); // false
var str6 = 123
var res6 = Boolean(str6);
console.log(res6); // true
var str7 = 0
var res7 = Boolean(str7);
console.log(res7); // false