js从0开始学习

js - 11 JS数据类型的转换

2019-11-06  本文已影响0人  大怪兽迪迦

类型转换

js中的取值类型很灵活,可以参考布尔类型,当期望使用一个布尔类型的值的时候可以提供任意类型的值,会根据需要来转换。(如:一些真值转换为true,一些假值转换为false; )

上图总结:
1.以数字表示的字符串可以直接转换为数字,允许在开始和结尾处带空格(开头和结尾处的非空格不会被当成数字直接量的一部分,导致结果为NaN)
2.原始值通过调用String([val])、Number([val])、Boolean([val])构造函数转换为各自的包装对象
3.null和undefined属于例外,当你期望他们是对象时,会造成一个类型错误(TypeError)

转换和相等性

因为js较为灵活,所以 ‘==’ 相等运算符也随相等的含义灵活多变
如:

null == undefined;
"0" == 0;               // 在比较之前,“0”会转变为0
0 == false              // false会转变为0,再比较
“0” == false            // false转变为0,“0”转变为0

注意:一个值转换为另一个值时,并不会意味着这两个值相等,比如indefined会转换为false,false并不等于undefined.

显式类型转换

js中会自动的做某些转换,但有时却需要自己手动。
常见的方法有:

Number("3")                 // => 3
String(false)               // => "false"
Boolean([])                 // => true
Object(3)                   // => new Number(3)

另:某些运算符也会做隐示类型转换
’x + “”‘ 可以等价于String(x);
‘+ x’ 可以等价于Number(x),也可以写成 x - 0;
‘!!x’ 可以等价于Boolean(x),注意两个叹号;

js中提供了一些方法,可以使得Number to String/String to Number更简单

对象转换为值

对象到布尔值的转换很简单:所有对象都转换为true,包装对象也是这样:new Boolean(false) => true;
对象到字符串和数字是通过调用待转换对象的一个方法来完成的。
*以下方法只适用于本地对象,而宿主对象(如web浏览器定义的对象)根据各自的算法来转换


var now = new Date()                  // => 创建一个日期对象
typeof(now + 1)                       // => "string"("+"将日期转换为字符串)
typeof(now - 1)                       // => "number"("-"使用对象到数字的转换)
now == now.toString()                 // => true(隐式的和限式的字符串转换)
now > (now - 1)                       // => true(">"将日期转换为数字)
上一篇下一篇

猜你喜欢

热点阅读