JS 里的数据类型转换与内存图概念

1、JS里面有哪些数据类型:

基本类型六种:number、string、boolean、symbol、null、undefined;
复杂类型一种:object,由基本类型组成;

1)其他类型转string

使用toString内置API进行转换:
var n=1
n.toString()  // "1"
var b=true
b.toString()  // "true"
var c=null
 c.toString()  // 无法转换,报错
var d=undefined
 d.toString()  // 无法转换,报错
var object={name:'Angel'}
object.toString() // '[object Object]'

注:console.log打印出的实际是转换的字符串,即同console.log((x).toString()),很多的地方需要的是字符串,会自动调用toString内部API进行转换;

使用+''进行转换(空字符串放前后都可以):
1+''  // "1"
true+'' // "true"
null+''  //"null"
undefined+''  // "undefined"
var object={name:'Angel'}
object+''  // '[object Object]'

注:1+'1' //"11",等价于(1).toString()+'1',不同类型相加,有字符串会优先都转为字符串进行相加,但一般是不这样使用的;

使用String全局方法进行转换:
window.String(1)  // "1"
window.String(true) // "true"
window.String(null)  //"null"
window.String(undefined) // "undefined"
window.String({})   // '[object Object]'

2)其他类型转boolean

使用Boolean进行转换:
Boolean(1)  // ture
Boolean(0)  // false
Boolean(true) // true
Boolean('')  //false,空字符串
Boolean(' ')  //true,空格字符串
Boolean(null) //false
Boolean(undefined) //false
Boolean({})   // true,只要是对象就是true
使用!!进行转换:
!!1  // ture
!!0  // false
!!true // true
!!'') //false,空字符串
!!' '  //true,空格字符串
!!null //false
!!undefined //false
!!{})  // true,只要是对象就是true

注:其它类型转boolean,只有6个值是false,分别是0NaNnullundefined''""

3)其他类型转number

例:如何将'1'→1
Number('1') //1
parseInt('1',10) //1,后面的10代表几进制
parseFloat('1') //1
 '1'-0 //1,用减0的方法
+'1' //1,用取正的方法
+'-1' //-1,用取正的方法

2、内存图概念(个人理解)

定义:变量名、函数名等存储在代码区,实际的数据内容存储在Stack栈内存和Heap堆内存区,故内存图包含代码区、Stack区、Heap区,基本数据一般都存储在Stack区,对象数据一般存储在Heap区;

具体以下面例子说明:
  • 示例1
var a = 1
var b = a
b = 2
a?  //  1
  • 对应内存图分析


    示例1

从内存图进行分析,可以直观看到a的值没变,还是1;

  • 示例2
var a = {name:'a'}
var b = a
b = {name:'b'}
a.name?  // 'a'
  • 对应内存图分析


    示例2

从内存图进行分析,可以直观看到a的name属性值为'a';

  • 示例3
var a = {name:'a'}
var b = a
b.name='b'
a.name?  // 'b'
  • 对应内存图分析


    示例3

从内存图进行分析,可以直观看到a的name属性值为'b';

  • 示例4
var a = {name:'a'}
var b = a
b=null
a.name?  // 'a'
  • 对应内存图分析


    示例4

从内存图进行分析,可以直观看到a的name属性值为'a';

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容