强制类型转换:
1.将变量类型转换为string类型:
通过toString()方法转换:
var num = 10; console.log(typeof num); /*这里打印的结果为number*/ num.toString(); console.log(typeof num); /*这里打印的结果为number*/ console.log(num.toString()); /*这里打印的结果为10*/ console.log(typeof num.toString()); /*这里打印的结果为String*/ num = num.toString(); /*将变量num重新赋值*/ console.log(typeof num); /*这里打印的结果为String*/
分析代码:
先定义了一个全局变量num并赋值为10,该变量的类型为number。
接着对该变量使用toString()方法,再次检测该变量的数据类型依旧为number(因为没有重新赋值)。
然后再对 num.toString() 的结果进行了打印,返回了 “10” ,且检测其返回结果(10)的类型为String(这证明 toSring() 方法隐式return出了转换结果,而且需要一个变量进行接收)。
最后使用已定义的num变量接收了num.toSring return出来的结果。
toString() 方法不能对 null 和 undefined 类型进行转换,会报错!
通过String()函数转换:
var num = 10; console.log(typeof num); /*这里打印的结果为number*/ num = String(num); console.log(typeof num); /*这里打印的结果为string*/
通过String()函数也可以将变量类型强制转换为String类型,同样需要将其结果赋值给变量。
对 Number和Boolean 类型进行转换时,实际上它内部调用的是 toString() 方法。
不同的是:String()函数还可以对 null和undefined 类型的变量进行转换,直接返回字符串 "null" 和 "undefined" !
总结:将变量强制转换为String类型的方法有:①toString() ②String()
2.将变量类型转换为Number类型:
通过Number()函数转换:
var num = "10"; /*纯数字的字符串*/ console.log(typeof num); /*这里打印的结果为string*/ num = Number(num); console.log(num); /*这里打印的结果为10*/ console.log(typeof num); /*这里打印的结果为number*/ console.log('--------------------------'); var message = "今年是2021年"; /*非纯数字的字符串*/ console.log(typeof message); /*这里打印的结果为string*/ message = Number(message); console.log(message) /*这里打印的结果为NaN*/ console.log(typeof message); /*这里打印的结果为number*/ console.log('--------------------------'); var a = ""; /*空字符串*/ console.log(typeof a); /*这里打印的结果为string*/ a = Number(a); console.log(a); /*这里打印的结果为0*/ console.log(typeof a); /*这里打印的结果为number*/ console.log('--------------------------'); var b = true; /*布尔值true*/ console.log(typeof b); /*这里打印的结果为boolean*/ b = Number(b); console.log(b); /*这里打印的结果为1*/ console.log(typeof b); /*这里打印的结果为number*/ console.log('--------------------------'); var c = false; /*布尔值false*/ console.log(typeof c); /*这里打印的结果为boolean*/ c = Number(c); console.log(c); /*这里打印的结果为0*/ console.log(typeof c); /*这里打印的结果为number*/ console.log('--------------------------'); var d = null; /*空值null*/ console.log(typeof d); /*这里打印的结果为object*/ d = Number(d); console.log(d); /*这里打印的结果为0*/ console.log(typeof d); /*这里打印的结果为number*/ console.log('--------------------------'); var e = undefined; /*未定义值undefined*/ console.log(typeof e); /*这里打印的结果为undefined*/ e = Number(e); console.log(e); /*这里打印的结果为NaN*/ console.log(typeof e); /*这里打印的结果为number*/ console.log('--------------------------');
①当字符串为纯数字时直接返回该数字,当字符串中含有非数字时返回NaN(NaN,全称:not a number ,表示不是一个数字,但 typeof NaN 返回的是number。)
②当字符串为空串时返回 0
③当变量为布尔类型时:true返回 1 ,false返回 0
④当变量为null类型时返回 0
⑤当变量为undefined时返回 NaN
通过parseInt()转换:
var sty = '200px的样式'; sty = parseInt(sty); console.log(sty); /*输出结果为200*/ console.log(typeof sty); /*number*/ var std = '200.545px的样式'; std = parseInt(std); console.log(std); /*输出结果为200*/ console.log(typeof std); /*number*/ var str = '我有200块'; str = parseInt(str); console.log(str); /*输出结果为NaN*/ console.log(typeof str); /*number*/ var stx = '20乘10等于200'; stx = parseInt(stx); console.log(stx); /*输出结果为20*/ console.log(typeof stx); /*number*/
特点:它可以对字符串中的数字进行提取并返回,对于非字符串的转换它会先将其转换为字符串再进行转换
注意:当需要转换的值为“0X”等其他数开头时,某些低版本浏览器会将其当作某进制数来进行转换。
可以通过给parseInt传参解决,parseInt(string,10)。string代表需要转换的变量10代表将该string参数当成几进制进行转换。
提取规则:1.非数字开头直接返回NaN。 2.以数字开头时提取数字,直到遇到非数字。 3.仅提取整数,小数点及后面的值不提取。
通过parseFloat()转换:
var stx = '200.545的数据'; stx = parseFloat(stx); console.log(stx); /*输出结果为200.545*/ console.log(typeof stx); /*number*/
特点:它可以对字符串中的数字进行提取并返回,对于非字符串的转换它会先将其转换为字符串再进行转换
提取规则:和 parseInt() 大致相同,不同的是它可以提取小数(必须是有效小数)
总结:将变量强制转换为Number类型的方法有:①Number() ②parseInt() ③parseFloat()
3.将变量类型转换为Boolean类型:
通过Boolean()转换:
var num = 0; num = Boolean(num) console.log(num) /* false */ var num = NaN; num = Boolean(num) console.log(num) /* false */ var num = 2; num = Boolean(num) console.log(num) /* true */ var num = -2; num = Boolean(num) console.log(num) /* true */ var str = "ssaiuhujakjs"; str = Boolean(str) console.log(str) /* true */ var str = ""; /*空串*/ str = Boolean(str) console.log(str) /* false */ var str = " "; /*全空格的字符串*/ str = Boolean(str) console.log(str) /* true */ var str = null; str = Boolean(str) console.log(str) /* false */ var str = undefined; str = Boolean(str) console.log(str) /* false */ var str = Object; str = Boolean(str) console.log(str) /* true */ var str = Array; str = Boolean(str) console.log(str) /* true */ var str = Function; str = Boolean(str) console.log(str) /* true */
特点:1.非 0 和 NaN 的数字全部转换为 true
2.除了空字符串为 false,其他任何字符串都转换为 true
3.null 和 undefined 都转换为 false
4.对象(Object、Function、Array)都转换为 true