加入收藏 | 设为首页 | 会员中心 | 我要投稿 阜阳站长网 (https://www.0558zz.com/)- 科技、建站、内容创作、云计算、网络安全!
当前位置: 首页 > 数据库 > MsSql > 正文

学习JavaScript (二)数据类型的转换

发布时间:2023-12-20 13:15:57 所属栏目:MsSql 来源:DaWei
导读: JavaScript数据类型的转换javascript是一种动态类型语言,变量没有类型限制,可以随时赋予任意值,在JS中一共有7种数据类型,string、number、symbol、boolean、null、undefined、object。数

JavaScript数据类型的转换

javascript是一种动态类型语言,变量没有类型限制,可以随时赋予任意值,在JS中一共有7种数据类型,string、number、symbol、boolean、null、undefined、object。

数据类型转换指将一个数据类型强制转换为其他的数据类型

类型转换主要指,将其他数据类型转换为:String Number Boolean

数据类型转换分为显式数据类型转换和隐式数据类型转换。

因为变量的数据类型是不确定的Mssq类型转换函数,且各种运算符对数据类型是有要求的,所以如果运算符发现运算子的类型与预期不符,就会自动转换类型。

1、转换为String

方式一:

调用被转换数据类型的toString()方法

该方法不会影响原变量,它会将转换的结果返回

注意:null和undefined这两个值没有toString()方法,如果调用他们的方法会报错。

例子:

Mssq类型转换函数_16进制转换10进制函数_excel转换日期格式函数

记忆:Cannot read property 指的是不能读取属性

除此之外object的toString方法 返回的结果可能不是预期的结果,得到的是[Object Object]

excel转换日期格式函数_16进制转换10进制函数_Mssq类型转换函数

方式二:

调用String()函数,并将被转换的数据作为参数传递给函数

使用String()函数做强制类型转换时,对于Number和Boolean实际上就是调用的toString()方法。但是对于null和undefined就不会调用toString()方法,它会将null直接转换为“null”;将undefined直接转换为“undefined”

例子

16进制转换10进制函数_excel转换日期格式函数_Mssq类型转换函数

方式三:

用+ '',将任意数据类型转换为字符串

例子:

16进制转换10进制函数_excel转换日期格式函数_Mssq类型转换函数

2、转换为Boolean

方式一:调用Boolean()

例子:

Mssq类型转换函数_excel转换日期格式函数_16进制转换10进制函数

方式二:用!!x

例子:

Mssq类型转换函数_excel转换日期格式函数_16进制转换10进制函数

转换结果:

number :只有0 , NaN 是false

string:空字符串为false其他字符串为ture

null:false

undefined:false

Object:全是ture

五个falsy值:0, NaN , '' , null , undefined

(falsy: 是在Boolean上下文中认定可以转换为false的值)

3、转换为Number

方式一: Number('x'),使用方法同toString()函数一样 字符串转数字

字符串转数字:

如果是纯数字的字符串,直接转换为数字

如果字符串中有非数字的内容 则转换为NaN

如果字符串是一个空串或者全是空格的字符串,则转为0

布尔转数字:

true转成1,false转成0

null转数字:

结果为0

undefined转数字:

结果为NaN

方式二: parseInt('x,10'),函数解析一个字符串参数,并返回一个指定基数的整数,括号里的10表示10进制,parseInt()可以将一个字符串中的有效的整数内容取出来,然后转换为Number,从左往右读,读到非整数就停止

例子:

excel转换日期格式函数_Mssq类型转换函数_16进制转换10进制函数

读到12.21px时,没有读到小数点后面的数,只取整数部分

方式三: parseFloat('x')函数解析一个字符串参数并返回一个浮点数,parseFloat()作用和parseInt()类似,不同的是他可以获得有效的小数

例子:

excel转换日期格式函数_16进制转换10进制函数_Mssq类型转换函数

方式四: '1' - 0

例子:

Mssq类型转换函数_excel转换日期格式函数_16进制转换10进制函数

方式五: + '1'

例子:

Mssq类型转换函数_excel转换日期格式函数_16进制转换10进制函数

注意:方式1、4、5等价,既可解析整数又可解析小数,但无法解析有非数字字符的字符串。

老司机用法:方式四

内存图

你买一个 8G 的内存条

操作系统开机即占用 512MB

Chrome 打开即占用 1G 内存

Chrome 各每个网页分配一定数量的内存

这些内存要分给页面渲染器、网络模块、浏览器外壳和 JS 引擎(V8引擎)

JS 引擎将内存分为代码区和数据区

我们只研究数据区

数据区分为 Stack(栈内存) 和 Heap(堆内存)

简单类型的数据直接存在 Stack 里 (number/string/null/undefined/symbol/boolean)

复杂类型的数据是把 Heap 地址存在 Stack 里(Object)

遇到问题就画图,不要分析。

面试题

16进制转换10进制函数_Mssq类型转换函数_excel转换日期格式函数

垃圾回收

总结:

如果一个对象没有被引用

他就是垃圾,将被回收

浅拷贝与深拷贝

浅拷贝是将原始对象中的数据型字段拷贝到新对象中去,将引用型字段的“引用”复制到新对象中去,不把“引用的对象”复制进去,所以原始对象和新对象引用同一对象,新对象中的引用型字段发生变化会导致原始对象中的对应字段也发生变化。

深拷贝是在引用方面不同,深拷贝就是创建一个新的和原始字段的内容相同的字段,是两个一样大的数据段,所以两者的引用是不同的,之后的新对象中的引用型字段发生改变,不会引起原始对象中的字段发生改变。

浅拷贝例子:

var a = {name: 'Ming'}

var b = a

b.name = 'b'

a.name === 'b' // true

我们对b做改变,a也改变了

深拷贝例子:

var a = {name: 'Ming'}

var b = deepClone(a) // deepClone 还不知道怎么实现

b.name = 'b'

a.name === 'a' // true

对b做改变,a不影响

笔记内存图解析:

excel转换日期格式函数_Mssq类型转换函数_16进制转换10进制函数

(编辑:阜阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章