; 对象 Object、数组 Array、函数 Function
Object
一般是 {},标签的数据类型都是 Object
Array
一组“成员”,一般是 []
Function
标志是,function
数据类型转换
自动类型转换
转换的规则
预期什么类型的值,就调用该类型的转换函数。比如,某个位置预期为字符串,就调用String函数进行转换。如果该位置即可以是字符串,也可能是数值,那么默认转为数值
利用算术运算符
console.log(+str);
console.log(str - 0); console.log(str * 1); console.log(str / 1);
注:如果字符串无法全都转为数字,则会变为 NaN
利用算术运算符的 +,进行字符串的拼接
由于自动转换具有不确定性,而且不易除错,建议在预期为布尔值、数值、字符串的地方,全部使用Boolean、Number和String函数进行显式转换
强制类型转换
Number
规则:
严格转换,能识别小数点,不能出现非数字,出现就会NaN
空字符串会转为 0
自动过滤一个字符串前导和后缀的空格
布尔值:true 转成 1,false 转成 0
undefined:转成 NaN
Number方法的参数是对象时,将返回NaN,除非是包含单个数值的数组
Number方法的参数是对象时,将返回NaN,除非是包含单个数值的数组,如:
转换对象:
Number({a: 1}) // NaN
Number([1, 2, 3]) // NaN
Number([5]) // 5
Number 示例:
转换基本数据类型:
// 数值:转换后还是原来的值
Number(324) // 324
// 字符串:如果可以被解析为数值,则转换为相应的数值
Number('324') // 324
// 字符串:如果不可以被解析为数值,返回 NaN
Number('324abc') // NaN
// 空字符串转为0
Number('') // 0
// 布尔值:true 转成 1,false 转成 0
Number(true) // 1
Number(false) // 0
// undefined:转成 NaN
Number(undefined) // NaN
// null:转成0
Number(null) // 0
其他方法:
parseInt()、parseFolat()、isNaN
isNaN
isNaN
方法可以用来判断一个值是否为NaN
isNaN(NaN) // true
isNaN(123) // false
isNaN(x)
如果 x 是特殊的非数字值 NaN(或者能被转换为这样的值),返回的值就是 true。如果 x 是其他值,则返回 false
true 不是一个数字
isNaN("hello world"); -> true
false 是一个数字
isNaN(123); -> false
isNaN只对数值有效,如果传入其他值,会被先转成数值
isNaN('Hello') // true
// 相当于
isNaN(Number('Hello')) // true
isNaN为true的值,有可能不是NaN,而是一个字符串
比如,传入字符串的时候,字符串会被先转成NaN,所以最后返回true
由于 NaN 的意思是 not a numer ,所以isNaN判断时,本身是双重否定,true 也就代表着是 NaN,即不是一个数字
当值是0时,返回的值仍为 true
String
转换基本数据类型:
数值:转为相应的字符串。
字符串:转换后还是原来的值。
布尔值:true转为字符串"true",false转为字符串"false"。
undefined:转为字符串"undefined"。
null:转为字符串"null"
转换对象:
String方法的参数如果是对象,返回一个类型字符串;如果是数组,返回该数组的字符串形式
其他方法:
toString()
方式:直接转换,相当于给数值添加两个引号
var num1 = 123;
var str1 = num1.toString();
console.log(str1); // 123 -> 字符串
var num2 = NaN;
var str2 = num2.toString();
console.log(str2); // NaN -> 字符串
可以接受参数:
toString(8); toString(16); toString(32); ...
参数时进制,结果也是以进制表示的数字
toFixed()
主要作用是保留小数位,顺带着转变数据类型
var num = 123.456;
var str = num.toFixed(2);
console.log(str); // 123.46 -> 字符串
保留 n 位小数的时候会自动四舍五入。
Boolean
可以将任何类型的值转为 布尔值
规则:除了以下五个值的转换结果为 false,其他的值全部为 true
undefined
null
0(包含-0和+0)
NaN
"" ''(空字符串
true 和 false 这两个布尔值不会发生变化
所有对象(包括空对象)的转换结果都是true,甚至连 false 对应的布尔对象new Boolean(false)也是true
注意:" " 并不是空字符串,看不见的缩进和空格也是字符
java script 运算符
算术运算符