JS的数据类型
基本数据类型六种:string、number、boolean、null、undefined、symbol
对象类型:也叫引用类型,主要包括Array和function
为什么说JS是弱类型的语言
js在声明变量的时候并没有预先确定的类型,变量的值就是它的类型,同一值在不同的情况下会发生强制转换变成不同的类型。所以说它是弱类型的语言。
js强制转换的规则
js有一个内置ToPrimitive(obj,type)算法,用于将引用引用类型转换成基本类型
String 运算符号转换规则
null=>”null” undefined=>undefined true=>’trur’ false=>’false’
number运算符强制转换
null=>0; undefined=>NaN; ture=>1; false=>0;
字符串转换遵循数字常量规则,转换失败返回NaN
Boolean
除了undefined/null/0/-0/NaN/空字符串为false,其他为true.
js强制转换的不同场景
什么时候自动转换成string类型?
字符串类型的而转换,主要发生在字符串的加法运算中
1 | '2' + 1// '21' |
运算隐式转换
+号左右两边分别进行取值,进行ToPrimitive()操作
分别获取左右转换之后的值,如果存在String,则对其进行Tostring处理后进行拼接
其他都按照ToNumber处理(调用valueOf)
在转换时ToPrimitive,除去Date为string外,其余都按照ToNumber处理
什么时候自动转换成Number
有加法运算符(-*也可以),但是没有String类型的时候,会优先转换成数字类型
toString和String的区别
toString不可以将null和undefined转换成字符串,可以带进制转换,如334.toString(2),
而string可以转换null和undefined,但是不可以进行进制转换