任意类型转字符串
- String(x)
-
这是一个全局函数,可以在全局调用:window.String()
-
x.toString()
- null和undefined不具有toString()方法
-
x + ''(加号如果发现左右任意一边有字符串,他就会把另一边也变为字符串)
关于1+’1’为什么等于字符串’11’的解释:
加号运算,由于加号只能加相同类型的东西,所以他会尝试改变这个类型,优先会尝试把他变成字符串就相当于:(1).toString() +’1’,所以就是’11’
任意类型转数字
-
Number(x)
-
parseInt(x, 10)
-
parseFloat(x)
-
x - 0
-
+x
任意类型转布尔
-
Boolean(x)
-
!!x(取反再取反,也就是负负得正,等于他本身的布尔值了)
-
js里面只有五个falsy(falsy是在 Boolean 上下文中认定可转换为false的值)值:
false, 0, NaN, null, undefined, ’’(空字符串);
除了五个falsey值外,所有的object都是true,其他的都是true
内存图
-
外存:断电也不会清空内容,速度慢。最快的外存SSD,市面常见的是机械硬盘(易坏)
-
内存:1G、2G~16G
-
特点:一旦断电,东西全空;速度快
-
Js工作分配内存,主要划分为两个大区:代码区(左边),数据区(右边);
数据区又分为stack栈内存和heap堆内存。
数据区里的值:
-
简单(number/string/undefined/symbal/null/bolean) 存在stack栈内存里
-
复杂(Object类型) 存heap地址存入stack
简单类型又叫基本类型;复杂类型又叫引用类型。
引用:
注意:
1. 等于号只做一件事情,就是把右边的东西存到左边来;
2. Heap里面的内容只能添加不能直接更改
浅拷贝和深拷贝
深拷贝
var a = 1;
var b =a;
b = 2;
a = 1
- 上面的代码当变量b变得时候不会影响a,这就属于深拷贝
基本类型的赋值就是深拷贝
浅拷贝
var a= {
name: ‘a’
}
var b = a;
b.name = ‘b’;
a.name = ? //结果也是’b’
b变导致a变这就属于浅拷贝
网友评论