文章目录
一、回顾数据类型
- 在 JavaScript 中有 6 种不同的数据类型:
string
number
boolean
object
function
symbol
- 3 种对象类型:
Object
Date
Array
- 2 个不包含任何值的数据类型:
null
undefined
二、判断数据类型
介绍:既然已经把数据分了类型,那么我们就要知道我们储存的数据是一个什么类型的数据
2.1、typeof
- 可以判断数据类型,它返回表示数据类型的字符串
//第一种使用方法
var n1 = 100;
console.log(typeof n1);
//第二种使用方法
var n2 = 'aksfj';
console.log(typeof(n2));
typeof "John" // 返回 string
typeof 3.14 // 返回 number
typeof NaN // 返回 number
typeof false // 返回 boolean
typeof [1,2,3,4] // 返回 object
typeof {name:'John', age:34} // 返回 object
typeof new Date() // 返回 object
typeof function () {} // 返回 function
typeof myCar // 返回 undefined (如果 myCar 没有声明)
typeof null // 返回 object
2.2、toString.call()
- 通过Object下的toString.call()方法来判断
Object.prototype.toString.call();
console.log(toString.call(123)); //[object Number]
console.log(toString.call('123')); //[object String]
console.log(toString.call(undefined)); //[object Undefined]
console.log(toString.call(true)); //[object Boolean]
console.log(toString.call({})); //[object Object]
console.log(toString.call([])); //[object Array]
console.log(toString.call(function(){})); //[object Function]
2.3、instanceof
A instanceof B
可以判断A是不是B的实例,返回一个布尔值,由构造类型判断出数据类型
console.log(arr instanceof Array ); // true
console.log(date instanceof Date ); // true
console.log(fn instanceof Function ); // true
//注意: instanceof 后面一定要是对象类型,大小写不能写错,该方法试用一些条件选择或分支
2.4、constructor
- constructor 属性返回所有 JavaScript 变量的构造函数。
"John".constructor // 返回函数 String() { [native code] }
(3.14).constructor // 返回函数 Number() { [native code] }
false.constructor // 返回函数 Boolean() { [native code] }
[1,2,3,4].constructor // 返回函数 Array() { [native code] }
{name:'John', age:34}.constructor // 返回函数 Object() { [native code] }
new Date().constructor // 返回函数 Date() { [native code] }
function () {}.constructor // 返回函数 Function(){ [native code] }
- 查找返回值判断
function isArray(myArray) {
return myArray.constructor.toString().indexOf("Array") > -1;
}
- 直接判断
console.log('数据类型判断' - constructor);
console.log(arr.constructor === Array); //true
console.log(date.constructor === Date); //true
console.log(fn.constructor === Function); //true
2.5、isNaN(判断数字)
- 使用 isNaN 这个方法来判断一个变量是不是数字
//如果变量是一个数字
var n1 = 100;
console.log(isNaN(n1); // =>false
//如果变量不是一个数字
var n2 = "javascript";
console.log(isNaN(n2); // =>true
三、数据类型转换
介绍:数据类型之间的转换,比如数字转成字符串,字符串转成布尔,布尔转成数字等
3.1、其他数据类型转成数值
Number(变量)
- 可以把一个变量强制抓换成数值类型
- 可以转换小数,会保留小数
- 可以转换布尔值
- 遇到不可转换的返回NaN
parseInt(变量)
- 从第一位开始检查,是数字就转换,直到遇到一个不是数字的内容
- 开头不是数字,那么直接返回NaN
- 不认识小数点,只能保留整数
parseFloat(变量)
- 从第一位开始检查,是数字就转换,直到遇到一个不是数字的内容
- 开头不是数字,那么直接返回NaN
- 认识一次小数点
除了加法以外的数字运算
- 运算符两边都是可运算数字才行
- 如果运算符任何一遍不是一个可运算数字,那么就会返回NaN
- 加法不可以用
3.2、其他数据类型转成字符串
变量.toString()
- ull 和 undefined 数据类型不能使用
String(变量)
- 所有数据类型都可以使用
使用加法运算符
- 在 JS 里面,
+
由两个含义 - 字符串拼接:只要
+
任何一边是字符串,就会进行字符串拼接 - 加法运算:只有
+
两边都是数字的时候,才会进行数学运算
3.3、其他数据类型转成布尔值
Boolean(变量)
- 在 js 中,只有
''、0、null、undefined、NaN
,这些是false,其余都是true