欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js强制数据类型转换 - Kaiqisan

程序员文章站 2023-12-22 20:01:16
...

こんにちは,また会えるのは嬉しいです,Kaiqisanすうう!今天要讲讲关于js数据,类型转换的问题,也是从小角度出发探讨一个js问题

js强制数据类型转换

js这门编程语言是一种很特殊的语言,它是弱类型的语言,这个特征是别的主流语言(c c++ java python等)都不具有的,这大幅度地减少了编程的复杂度,但是由此产生的问题也是js独有的,有时因为不小心产生的数据类型的问题导致程序的莫名其妙的问题也是非常难察觉的。

JS数据类型

传统认知(ES5)里面,有6种,Number(数字类型)、String(字符串类型)、Boolean(布尔类型)、undefined(未定义)、object(对象)、Null(空指针)。

在ES6之后,新增了Symbol 类型,这是一种在ES6 中新添加的数据类型 Symbol 本质上是一种唯一标识符,本章就不详细展开说明了。

谷歌67版本中还出现了一种 bigInt。是指安全存储、操作大整数。

其他类型强制转换字符串

toString(): 使用之后就可以生效,但需要一个参数接受强制转换之后的参数(赋值给自己也可以),但是不欢迎null和undefined数据类型参与强制转换。

let a = 100
a = a.toString()
console.log(typeof a) // string

String(cont): 同上,但是欢迎null和undefined数据类型参与转换。

let a = 100
a = String(a)
console.log(typeof a) // string
let a = null
a = String(a)
console.log(a) // 'null'
let a
a = String(a)
console.log(a) // 'undefined'

a + '': 快捷方法,使用隐形转换。

let a = 100
a = a + ''
console.log(typeof a) // string

其他类型强制转换数字

绝大多数的强制转换数字都是字符串类型转化为数字类型。

Number(): 最关键的把别的类型的数据转化为数字的方法

let a = '1'
a = Number(a)
console.log(typeof a) // number
console.log(a) // 1

如果您想要一个字符串成功转化为数字的话,定义的字符串就必须要有一个数字该有的样子。如果非法命名之后又强制转换的话虽然不会报错,但是它会给你转化为,表示一个空的数字类型的NaN。

let a = '1.1.1'
a = Number(a)
console.log(a) // NaN

如果您的字符串啥也没有写或者里面只有空格的话,直接传值0

let a = ''
a = Number(a)
console.log(a) // 0
// ------------------
let b = '  '
b = Number(b)
console.log(b) // 0

如果您的参数为null的话,将被转化为0

let a = null
a = Number(a)
console.log(a) // 0

如果您的参数为undefined的话,将被转化为NaN

let a   // 只声明,不赋值
a = Number(a)
console.log(a) // NaN

如果您的参数是Boolean类型的话,如果值为true,将转化为1,如果值为false的话,将转化为true。

let a = false
a = Number(a)
console.log(a) // 0

let b = true
b = Number(b)
console.log(b) // 1

如果您的参数是Object类型的话,不管它里面的内容是什么,统统会被转化为NaN。

let a = ['a', 'c']
a = Number(a)
console.log(a) // NaN

let b = { name: 10 }
b = Number(b)
console.log(b) // NaN

其他类型强制转换布尔类型

这里的内容应该很好记忆,因为布尔类型就两种值,哈,哈哈(尬笑

Boolean(a): 最直观的转化Boolean类型的方法,它根据不同数据类型的值来划分true 和 false。下面我们具体分析一下它的赋值情况吧!

数字类型除了0和NaN,其他都是true

let a = 112
a = Boolean(a)
console.log(a) // true
let a = 0
a = Boolean(a)
console.log(a) // false
let a = NaN
a = Boolean(a)
console.log(a) // false

null类型和undefined类型一律转化为false

let a = undefined
a = Boolean(a)
console.log(a) // false
let a
a = Boolean(a)
console.log(a) // false

对于字符串,只要内容不为空,就是true,哪怕里面有一个空格,也是true

let a = 'aa'
a = Boolean(a)
console.log(a) // true

let b = ' '
b = Boolean(b)
console.log(b) // true

let c = ''
c = Boolean(c)
console.log(c) // false

对于Object类型,一律为true,不管里面有没有内容

let a = {}
a = Boolean(a)
console.log(a) // true

其他类型强制转换null undefined类型

直接赋值即可,因为这俩类型都只有一个值

let a = 12
a = null
console.log(a) // null
console.log(typeof a) // Object,本质上来说,null是形容一个空对象的引用
let a = 12
a = undefined
console.log(a) // undefined
console.log(typeof a) // undefined

总结

这个知识点会与 ===== 的使用有所挂钩,以后也会出相关的文章说明。总而言之,不能因为js是弱类型的编程语言就忽视了数据类型的重要性,一不小心您就会踩这个坑而不自觉。就算是js,从现在的发展来看,它也在向目前的主流编程语言靠拢,变得越来越严谨,函数式编程也日益被看重。

上一篇:

下一篇: