York's Blog

JS的类型

其他数据类型转换成字符串

  1. number–>string toString 也可以+’’空字符串和window.String()
  2. boolean–>string toString 也可以+’’空字符串和window.String()
  3. null–>string toString报错 可以+’’空字符串和window.String 变成’null’()
  4. undefined–>string toString报错 可以+’’空字符串和window.String 变成’undefined’()
  5. object–>string toString,也可以+’’空字符串和window.String() “[object Object]”

console.log() 只能接受字符串 浏览器会瞎打,字符串的引号没了

其他数据类型转换成布尔值

  1. number–>boolean Boolean(1)–>true;Boolean(0)–>false; 可以用!!1得到boolean
  2. Boolean(‘’)空字符串–>false;Boolean(‘ ‘)空格字符串–>true 可以用!!‘’得到boolean
  3. null–>boolean Boolean(null)–>false; 可以用!!null得到boolean
  4. undefined–>boolean Boolean(undefined)–>false; 可以用!!undefined得到boolean
  5. object–>boolean Boolean({})–>true;Boolean({name:’york’})–>true 可以用!!{}得到boolean
js里面其他值变成boolean,只有五个特殊值(falsy值),number里面0和NaN是false;字符串里’’空字符串是false;null和undefined是false,所有的object对象都是true。

字符串转换成数字

  1. Number(‘1’)===1;
  2. parseInt(‘1’,10)===1,”1”按照十进制来转换; parse 解析的意思
  3. parseFloat(‘1.233’)===1.233,浮点数转换
  4. ‘1’-0 ===1 ‘1.23’-0===1.23
  5. +’1’===1 +’-1’===-1 取正
  6. valueOf 只能到自己的值 ‘1’.valueOf()===’1’ (1).valueOf()===1
  7. parseInt(‘011’)===11;parseInt(‘s’)===NaN;parseInt(‘1s’)===1

内存图

内存的特点:一旦断电,内容就全空了,速度很快

外存:机械硬盘容易坏10年寿命坏了一点就还可以用,ssd固态硬盘不易坏,坏了一点就全坏

占内存:操作系统:512M,浏览器:1G分配给多个页面 ,页面分配内存给1.HTML+CSS;2.JS;3.网络模块 HTTP;4.其他(插件,定时器)

JS的内存使用:分成两个区。一个代码区存代码,一个数据区存数据:var a=1,a存在代码区,1存在数据区,通过a拿到1;

数据分为两个区:stack栈内存,Heap堆内存 ,ECMAScript规定数字是64位的,字符是16位的,ES3之后字符可以是64位

值分为7种类型的数据,简单的存在stack里面,复杂的(object)存Heap地址存入stack

内存图
浏览器第一步做变量提升,js里面所有数字都是以64位浮点数存在,如果直接按顺序存对象,一旦你要改对象,就会发生翻天覆地的变化,一个字节B存8个01 ,64个01可以表示2^64,堆里的内存不按顺序存对象
stack栈内存和Heap堆内存 o2=o 把o的地址复制给o2,并不是多出来一个对象
引用 object存入地址100,object是对象的引用
对象的引用
对象的引用
对象的引用
对象的引用
对象的引用
对象的引用

GC 垃圾回收 如果一个对象没有被引用,它就是垃圾,将被回收

IE6有BUG内存泄露,关掉当前页面,并不会把document引用的对象视为垃圾,除非整个IE关闭

1
window.onunload=function (){document.body.onclick=null}

浅拷贝V.S.深拷贝

基本类型,赋值就是深拷贝 a=b ,b变a不变就是深拷贝,b变a也变就是浅拷贝

Proudly published with Hexo