目录
JS的数据类型:
数据类型的显式转换:
1.转换为字符串类型:
2.转换为数值类型:
3.转换为布尔类型:
数据类型的隐式转换:
1.递增和递减运算符(++,--的前置和后置):
2.逻辑操作符(!、&&、||),即短路运算符;
3.关系操作符(< > >= <= == != === !==):
4.相等操作符(==和===):
NaN:
JS的数据类型:
- 基础类型:number,string(索引用[i],不能用索引进行修改字符串),boolean(只能全小写),undefined,null;
- 引用类型:object(用.keys()返回对象的键值,用这个方法也可以返回数组的索引数组),symbol,其中数组和函数是特殊的object。
数据类型的显式和隐式转换:
1.转换为字符串类型:
- obj.toString() ???
- String(obj):可以把undefined和null转为字符,但是方法1转不了
- 用+进行字符串拼接(隐式)
2.转换为数值类型:
- Number(obj):可以将任何值转为数值,但是必须obj中全是数值。
- parseInt(obj):转换字符串中的整数,到小数点或者字符串结束,如果字符串开头,就会变成NaN。
- parseFloat(obj):转换字符串中的小数,到第二个小数点或字符串结束。
- 用+,-,-0运算转换:如+str,-str,str-0将字符串转为数值(隐式),做Number()操作
3.转换为布尔类型:
- Boolean(obj);
- !!obj(隐式)
(除空字符串,null,undefined,NaN,0会被转为false,其他都会被转成true。)
数据类型的隐式转换:
1.递增和递减运算符(++,--的前置和后置,做Number()操作):
- 如果是数字字符串(整数或者浮点数),则会用 number()方法 将字符串转为数值,再进行加减操作,返回number类型的值;
- 如果是包含其他字符的字符串,则返回NaN;
- 如果是布尔值,则会把true或false转为1或者0,再进行加减操作,返回number类型的值;
- 如果是null类型,则会把null转换为0,再进行加减操作,返回number类型的值;
- 如果是undefined,则会把undefined转为NaN,再进行加减操作,返回number类型的值;
- 如果是对象,则先会通过对象的valueof(),进行转换,如果返回的是NaN,调用toString()方法,返回number类型的值。
2.逻辑操作符(!、&&、||),即短路运算符;
- 逻辑非(!)操作符:首先会通过Boolean()函数将其操作值转为布尔值,再求反;
- 短路与(&&)操作符:第一个值为真,返回第二个操作值;
- 短路或(||)操作符:第一个值为假,返回第二个操作值。
3.关系操作符(< > >= <= == != === !==):
- 两个数值直接比大小;
- 两个都是字符串,则进行unicode编码比较;
- 一个是数值,另一个值转换为数值进行比较;
- 一个是对象,则调用对象的valueof()和toSring()方法,再进行上述比较;
- 一个操作是布尔值,则将布尔值转换为数值再进行比较,true返回1和false返回0;
- 要比较相等性之前,不能将 null 和 undefined 转换成其他任何值。
4.相等操作符(==和===):
- 一个是数值,另一个值转换为数值进行比较;
- null和undefined用==比较是相等的,但用===比较不相等。
NaN:
NaN做任何计算都是NaN;NaN与任何类型数据比较都会返回false。