简单数据类型之间是如何转换的?一文带你搞懂

136 阅读2分钟

JavaScript 是一种动态类型语言,这意味着变量的数据类型是在运行时确定的,并且可以在程序执行期间改变。在 JavaScript 中,简单数据类型(也称为原始类型)包括:NumberStringBooleannullundefinedsymbolBigInt。听说大厂面试经常考类型转换的问题,我们今天就来探讨探讨。

1. 转换为字符串

  • 使用全局函数 String() 或调用值的 .toString() 方法:
console.log(String()) // ''
console.log(String(false)) // 'false'
console.log(String(true)) // 'true'
console.log(String(+0)) // '0'
console.log(String(-0)) // '-0'
console.log(String(NaN)) // 'NaN'
console.log(String(undefined)) // 'undefined'
console.log(String(null)) // 'null'
console.log(String(123)) // '123'

function a(){}
console.log(String(a)) // 'function a(){}'

console.log(String(1/0)) // 'Infinity'

2. 转换为数字

  • 使用全局函数 Number() 或解析函数如 parseInt() 和 parseFloat()
console.log(Number(+0)) // 0
console.log(Number(-0)) // -0

console.log(Number(NaN)) // NaN
//undefined 数值上下文中没有转成一个特定数字的含义
console.log(Number(undefined)) // NaN

console.log(Number('')) // 0
console.log(Number(' ')) // 0
console.log(Number(null)) // 0

console.log(Number('123')) // 123
console.log(Number('-123')) // -123
console.log(Number('123a')) // NaN

console.log(Number('0x123')) // 291 

3. 转换为布尔值

  • 使用全局函数 Boolean() 可以将任何值转换为布尔值:
console.log(Boolean()) // 默认值为false
console.log(Boolean(false)) 
console.log(Boolean(true)) 

console.log(Boolean(+0)) // false
console.log(Boolean(-0)) // false

console.log(Boolean(NaN)) // false

console.log(Boolean('')) // false

4. 其他转换

  • null 和 undefined 没有直接的方法来转换其他类型,但当它们参与某些操作时,它们可以被隐式地转换为 0 或 false

5. 总结

  • 转String

    • NumberBoolean :使用 String() 函数或调用 .toString() 方法。
    • null 、 undefined:直接使用 String() 函数会得到 "null" 和 "undefined" 字符串。
  • 转number

    • String :使用 Number() 函数、parseInt() 或 parseFloat()。注意非数字字符会导致转换结果为 NaN
    • Booleantrue 转换为 1false 转换为 0
    • null:转换为 0
    • undefined:转换为 NaN
  • 转Boolean

    • 空字符串 ("")、0-0nullundefinedNaNfalse:转换为 false
    • 其余的所有:转换为true

以上就是今天分享所有内容了,喜欢的点个赞再走吧