1、JS里面有哪些数据类型:
基本类型六种:number、string、boolean、symbol、null、undefined;
复杂类型一种:object,由基本类型组成;
1)其他类型转string
使用toString内置API进行转换:
1 |
var n=1 |
注:console.log打印出的实际是转换的字符串,即同console.log((x).toString()),很多的地方需要的是字符串,会自动调用toString内部API进行转换;
使用+''
进行转换(空字符串放前后都可以):
1 |
1+'' // "1" |
注:
1+'1' //"11",等价于(1).toString()+'1'
,不同类型相加,有字符串会优先都转为字符串进行相加,但一般是不这样使用的;
使用String全局方法进行转换:
1 |
window.String(1) // "1" |
2)其他类型转boolean
使用Boolean进行转换:
1 |
Boolean(1) // ture |
使用!!
进行转换:
1 |
!!1 // ture |
注:其它类型转boolean,只有6个值是false,分别是
0
、NaN
、null
、undefined
、''
、""
###3)其他类型转number
例:如何将’1’→1
1 |
Number('1') //1 |
2、内存图概念(个人理解)
定义:变量名、函数名等存储在代码区,实际的数据内容存储在Stack栈内存和Heap堆内存区,故内存图包含代码区、Stack区、Heap区,基本数据一般都存储在Stack区,对象数据一般存储在Heap区;
具体以下面例子说明:
- 示例1
1
2
3
4var a = 1
var b = a
b = 2
a? // 1 - 对应内存图分析
从内存图进行分析,可以直观看到a的值没变,还是1;
- 示例2
1
2
3
4var a = {name:'a'}
var b = a
b = {name:'b'}
a.name? // 'a' - 对应内存图分析
从内存图进行分析,可以直观看到a的name属性值为’a’;
- 示例3
1
2
3
4var a = {name:'a'}
var b = a
b.name='b'
a.name? // 'b' - 对应内存图分析
从内存图进行分析,可以直观看到a的name属性值为’b’;
- 示例4
1
2
3
4var a = {name:'a'}
var b = a
b=null
a.name? // 'a' - 对应内存图分析
从内存图进行分析,可以直观看到a的name属性值为’a’;
近期评论