数据类型
这几天,遇到了很多数据类型的坑。可把我坑惨了。开始带大家深入了解js数据类型之间的小秘密
js数据为弱类型(没有太多数据分类,定义上少了很多要求)
一共分为六大基本数据类型
number(1,2,3)
string (“name”,“age”)
boolean( true ,flase )
null
undefind
object
非字符串到字符串的类型转换
1.加号运算符( + )即能用于数字加法,也能用于字符串拼接。
1
例如:
console.log("52" + "0"); //输出:"520"
console.log("52" + 0); //输出:"520"
console.log(52 + 0); //输出:52
那么,JavaScript 是怎样来判断我们要执行哪种操作的呢? 根据 ES5 规范,
如果某个操作数是字符串或者能够转换为字符串的话,+ 将进行拼接操作。其
中,"能够转换为字符串"的操作主要是针对对象而言,当某个操作数是对象的时
候,会首先检查该对象能否通过 valueOf() 方法返回基本类型值,如果不能,就
转而调用 toString() 方法。通过以上两个步骤,如果可以得到字符串,那么+
将进行拼接操作,否则执行数字加法。
1
2
3
4
5
6
7
8
9
10
11
非数字到数字的类型转换
2.加号运算符( + )可以把任何数据类型转换为数字,转换规则与 Number() 方法相同。
1
列如:
console.log(+true); //输出:1
console.log(+10); //输出:10
console.log(+null); //输出:0
console.log(+undefined); //输出:NaN
console.log(+“123”); //输出:123
console.log(+“01”); //输出:1
console.log(+“1.1”); //输出:1.1
console.log(+""); //输出:0
console.log(+“love”); //输出:NaN
1
2
3
4
5
6
7
8
9
注意非数字的字符串和布尔和null都会转为 NaN
非布尔值到布尔值的类型转换
1.数字除0和NaN外其他转化都为true
2.字符串类型转布尔:除了“”其他都是true("flase"重点强调为true)
3. null和undefined都会转换为false
4. 对象也会转换为true