《js里的数据类型转换》
一:转字符串
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'}