强制类型转换
储备知识
valueOf()
| 对象 | 返回值 |
|---|
| Array | 数组的元素被转换为字符串,这些字符串由逗号分隔,连接在一起。其操作与 Array.toString 和 Array.join 方法相同。 |
| Boolean | Boolean 值。 |
| Date | 存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。 |
| Function | 函数本身。 |
| Number | 数字值。 |
| Object | 对象本身。这是默认情况。 |
| String | 字符串值。 |
toString()
| 对象 | 操作 |
|---|
| Array | 将 Array 的元素转换为字符串。结果字符串由逗号分隔,且连接起来。 |
| Boolean | 如果 Boolean 值是 true,则返回 “true”。否则,返回 “false”。 |
| Date | 返回日期的文字表示法。 |
| Error | 返回一个包含相关错误信息的字符串。 |
| Function | 返回如下格式的字符串,其中 functionname 是被调用 toString 方法函数的名称:function functionname( ) |
| Number | 返回数字的文字表示。 |
| String | 返回 String 对象的值。 |
| 默认 | 返回 “[object objectname]”,其中 objectname 是对象类型的名称。 |
正文开始
Number
| 类型 | 返回值 |
|---|
| boolean | true-1/false-0 |
| number | 本身 |
| string | 1、如果字符串中只包含数字,则将其转换为十进制(忽略前导0) 2、如果字符串中包含有效的浮点格式,将其转换为浮点数值(忽略前导0) 3、如果是空字符串,将其转换为0 4、如果字符串中包含非以上格式,则将其转换为NaN |
| object | 1、调用对象的valueOf()方法,如果返回原始类型,按照上述原始类型Number()返回;如返回非原始类型,则再执行toString(),原始类型则使用Number()返回结果。否则,抛出错误 Uncaught TypeError: Cannot convert object to primitive value |
String
| 标题 | |
|---|
| 原始类型 | 字符串 |
| 对象 | 1、调用对象的toString()方法,如果返回原始类型,按照上述原始类型String()返回;如返回非原始类型,则再执行Number(),原始类型则使用String()返回结果。否则,抛出错误 Uncaught TypeError: Cannot convert object to primitive value |
练习题
1,{} + ''
2, {} + 0
3, [] + []
4, [] + {}
5, {} + []
6, {} + {}
7、[] == ![]
8、{} == ! {}
'5' + 1 // '51'
'5' + true // "5true"
'5' + false // "5false"
'5' + {} // "5[object Object]"
'5' + [] // "5"
'5' + function (){} // "5function (){}"
'5' + undefined // "5undefined"
'5' + null // "5null"
null + [] ?
null + {} ?
null + funciton() {}