饥人谷技术博客

《js里的数据类型转换》

2019-05-16  本文已影响6人  饥人谷__冯国欣

一:转字符串

1:number boolean 可以调用toString()方法转 为字符串。

2:undefined null 不能转字符串。会出现报错。

3.object 的 tostring()方法也可以转字符串,但是结果不是我们想要的。

4:主要 转 字符串方法 (老司机常用,快捷)+' ';

上面列举  + ‘ ’的方法使用,这个方法 比toString()方法功能要多还简单,此方法 null undefinde 也可以转字符串;

二:转布尔 

1:Boolean()方法转布尔,只要Boolean() 里面有东西,都为true, 0 和 空字符串 null  undefined 为false;

2:转布尔(老手方法)! 为取反,!!就表示自身的布尔值啦;

其中有5个falsy值,需要记忆;0,NAN,' ',null,undefined 为false;

其余的都为true

三:转number

1:Number()方法,

2:parseInt('1',10) 其中parseInt方法有两个参数,第一个 书数据要解析的值,第二个 是 进制。(parse:解析)

3:parseFloat 用来解析小数的方法

4:骚方法 (数据 -0)number类型; 简单实用

四:对象之间的转换

这里需要 用到 内存啦 (一旦断了电,里面东西都没啦);内存主要分为 代码区 ,数据区 ,数据区 包括 stack栈内存,Heap 堆内存。分布 如图 

stack 存简单类型的值 和地址,Heap 存 复杂类型的值例

:var a = {name: 'a'}                  

var b = a         例 图解 

b.name = 'b'

请问现在 a.name 是多少?  答 a.name = 'b'

1:一个面试题  垃圾回收 

如果 一个对象没有被引用 ,他就是 垃圾 ,将被回收 。如上图,假如 a 和 b 地址 同时 没指向Heap里的 对象 ,那么 Heap 里的 对象 就没被引用 ,它就是 垃圾 ,将被回收。

2:浅拷贝 深拷贝 

浅拷贝:假如 b 的 值变化 啦 a 的值就变化啦 那么 就是 浅拷贝。上图 例 子 就是 浅拷贝

深拷贝: 假如 b 的 值 变化 不影响a 的 变化,除了 基本类型 (因为 基本类型 不存 heap例),赋值 就是就是深拷贝。  如下例 就是深拷贝

 var a = {name: 'a'}

var b = a

b = null

请问现在 a 是什么? a = {name:'a'}

上一篇下一篇

猜你喜欢

热点阅读