Number,String,Boolean,Object,Undefined,Null,symbol(ES6);这七种数据类型的值是可以互相转换的。(这里不讲symbol)。
1.其他类型的值转换为String:
罗列出以下几种方法供参考:
①,value.toString();
②,String(value);
③,与空字符串相加:value+'';
PS: toString方法不能转换null与undefined,会报错,因为这两种值没有toString方法。其余转换字符串的方法就没有什么限制。
罗列其他类型转换字符串后的值供参考:
1 >>>>> '1'
true >>>>> 'true'
unll >>>>> 'null'
undefined >>>>> 'undefined'
{'有属性':'或没属性'} >>>>> '[object object]'
function(){} >>>>> 'function(){}'
[ ] >>>>> ''
[1,2,3] >>>>> '1,2,3'
PS:黑体部分,也就是函数与数组,他俩属于object类型。
2.其他类型的值转换为Number:
罗列一下方法供参考:
①,Number(value);
②,取正运算:+value;
③,减零运算:value-0;
④,将字符串转换为整数:parseInt(value, 进制);详见MDN
PS:如果value不是字符串,会先转字符串。第二个参数务必别省略,用哪种进制解析value是它决定的。省略不写就默认认十进制。转换从左往右进行,碰到第一个非数字停止,但是会忽略空格。没有数字返回NaN。见下例:
例:1. parseInt(1qw,10) >>>>> '1qw' >>>>>1
2. parseInt(null,10) >>>>> 'null' >>>>>NaN
3. parseInt(' 1n u ll',10) >>>>> '1n u ll' >>>>>1
⑤,将字符串转换为浮点数:parseFloat(value);详见MDN
PS:如果value不是字符串,会先转字符串。转换从左往右进行,碰到第一个“非数字也非小数点”的字符停止,若满足转换的首位是数字则会忽略数字前面空格。若满足转换的首位是小数点则会忽略小数点前面空格。数字与小数点之间的空格不忽略。没有数字或小数就返回NaN。很拗口很难理解,见下例。
例:1. parseFloat(' .1 q we') >>>>> 0.1; //首位小数点,忽略前空格
2. parseFloat(' 1 .123 q we') >>>>> 1; //首位数字,忽略前空格
3. parseFloat(' a1 a .123 q we') >>>>> NaN;//首位非数字非小数点
4 .parseFloat(' 1 .123 q we') >>>>> 1;//首位数字,忽略前空格,数字与小数点之间有空格,停止转换。
罗列其他类型的值转换为数值供参考:
'1.33e4' >>>>> 13300
'3wer' >>>>> NaN
true >>>>> 1
false >>>>> 0
null >>>>> 0
undefined >>>>> 0
{a:123} >>>>> NaN
function (){}>>>>> NaN
[1,2,3 ] >>>>> NaN
[ ] >>>>> 0
[''] >>>>> 0
['1'] >>>>> 1
[1] >>>>> 1
3,其他类型的值转换为Boolean:
罗列以下方法供参考:
①,Boolean(value);
②,!!value;
罗列其它数据类型转换为布尔值供参考:
null,undefined,0,'',NaN,0.0转换为布尔值为false,其余所有值全为true。
以上