1. typeof 操作符
使用typeof操作符来检测变量的数据类型。
使用方式:typeof 变量名
或者 typeof(变量名)
返回结果: number、string、boolean、object、undefined、function
typeof {} // 返回object
typeof [] // 返回object
typeof null // 返回object
typeof undefined // 返回undefined
typeof(function() {}) // 返回function
注:
- typeof返回结果的类型为string类型。
- 在JavaScript中,数组是一种特殊的对象类型。
- 在JavaScript中,null表示一个空对象的引用。
null和undefined的异同:
- null和undefined的值相等,类型不同。
- undefined 表示声明的变量未赋值,默认值为undefined。
- null 一般表示主动释放指向对象的引用,不再指向任何对象地址。
2. 显式类型转换
Number()
:将其它类型的参数值转换成number类型的参数值。
注:
- 不管是否成功转换,其结果的类型都是number类型。
- 如果一个参数值不能转换成一个数字,则返回NaN(非数字值)。
- 空字符串和null会被转换成数字0。
- 一元运算符“+”号,可以将变量转换成数字。
- 布尔值可以转换为数字,true为1,false为0。
Number('3.14') // 返回 3.14
Number(' ') // 返回 0
Number(true) // 返回 1
Number(false) // 返回 0
Number('abc') // 返回 NaN
typeof( + '1') // 返回 number
Number(undefined) // 返回NaN
parseInt()
: 解析一个字符串,返回一个整数。
用法:
- 当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。
- 当忽略参数 radix , JavaScript 默认数字的基数如下:
- 如果 string 以 “0x” 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。
- 如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。
语法: parseInt(string, radix)
,其中string是必需项,表示要被解析的字符串,radix是可选项,表示要解析的数字的基数,该值介于2~36之间。
注:
- 只有字符串中的第一个数字会被返回。
- 字符串首尾存在空格是允许的。
- 如果字符串的第一个字符不能被转换成数字,那么parseInt()会返回NaN。
parseInt('123.456') // 返回 123
parseInt(' 123.456 ') // 返回 123
parseInt('123.456abc') // 返回123
parseInt('1a.23') // 返回 1
parseInt('a123.456') // 返回 NaN
String()
:将参数转换成字符串。
语法:String(参数)
toString()
:作用同String()方法。
语法:toString(radix)
,其中radix是可选项,表示以10进制为基底将其转换为目标进制(radix进制)。
注: undefined 和 null 没有toString()方法。
3. 隐式类型转换
隐式类型转换,内部使用的都是显式类型转换方法。
isNaN()
:先使用 Number() 方法对参数进行转换,再讲结果与 NaN 进行比较。
++/-- +/-(一元正负运算符)
:内部使用Number()方法。
+
:加号两侧有一个是String类型,它就会调用String()方法将另一个也转换成String类型。
- * /
:内部先使用Number()方法。
> < >= <=
:符号两侧有一个是数字,则会转换成数字进行比较。
2>1>3 // 返回false
特殊的:
NaN == NaN // 返回false
undefined == null // 返回true