JS 里的类型

作者: 小志1 | 来源:发表于2018-03-20 16:05 被阅读0次

null

var n = null;
n.toString()  //Cannot read property ’toString’ of null

上面报错的意思:toString点前面的是null,因为null没有toString这个API,所以会报错。

如何转String

平时常使用的console.log也是用的tostring方法,把要打印的变成字符串。

String的三种方法:

  • toString()
  • string函数
  • + ''

如何转Boolean

Boolean(x) 如果

  • Boolean(0)
  • Boolean(NaN)
  • Boolean('')
  • Boolean(null)
  • Boolean(undefined)
    上面五个是false,其他是true (五个falsy值)
    但是一般转Boolean是这个方法:
    !!(x) 取Boolean !!0 !!true

如何转number

'1' -> 1

  • Number('1')
  • parseInt('1',10)
  • parseFloat('1.23')
  • '11' - 0 减零
  • + '13232' //13232 取正

Stack(栈内存) Heap(堆内存)

简单值存Stack地址 :number/string/null/undefined/Symbol/Boolean
复杂值存Heap地址 :Object
因为js没有指针,但是有引用这个概念。所以变量和对象之间的关系都是引用。
等于号只做一件事:把右边的东西存到左边
例子1

var a = 1
var b = a
b = 2
a = ? //1

把1存到a上,b把a的值存到b上,改变b,a存的值不影响,所以是1


stack赋值

例子2

var a = {name : 'a'}
b = a
b = {name : 'b'}
a.name = ? // a

{name = 'a'}存到heap堆里面,a存的是heap的引用,b=a以后
,b也是存的是a的地址的引用,所以b也存的的地址,但是当b变化以后,b存的地址就改变了,没有影响到a的地址,所以a.name = a

不同地址

例子3

var a = {name : 'a'}
b = a
b.name = 'b'
a.name = ? // b

同上,a和b存的是同一个地址,现在b修改的是地址里的值,所以a.name= b

同一地址

例子4

var a = {name : 'a'}
b = a
b = null
a = ? //   {name : 'a'}

一开始存到都是同一个地址,但是null赋给b以后,b就不指向a的地址了,不影响a,所以a = {name : 'a'}

null赋值
例子5
这是一个面试经常错的题
分析如上,在执行到a.x = a = {n:2}的时候,这里a的值已经确定好了,不会重复确定a的值了,故alert(a.x) // undefined

垃圾回收

  • 如果一个对象没有被引用,它就是垃圾,将被回收
var fn = function(){}
document.body.onclick = fn
fn = null

fn被回收了吗?
答案是没有,因为fn等于null了,没有引用这个函数了,应该被回收,但是有document.body.onclick在引用着,而document不会被浏览器回收的,所以有document罩着,不会被回收。

垃圾回收

相关文章

  • JS 里的类型

    null 上面报错的意思:toString点前面的是null,因为null没有toString这个API,所以会报...

  • JS里的类型

    1.Number2.String3.Null4.undefined5.symbol6.boolean以上都是简单类...

  • JS里的类型

    JS里的类型 类型转换 基本类型number string boolean symbol null undefin...

  • JS里的类型

    数据类型转换 转换为字符串 toString 方法// number 类型var n = 1n.toString(...

  • JS 里的类型

    JS 里的类型 number类型转string:toString、String()全局函数、加上空字符串boole...

  • JS 里的类型

    1.JS 里的数据 1.1.转化为字符串(console.log就是这个原理) 1.1.1.tostring nu...

  • JS 里的类型

    类型转换 任意类型转字符串 String(x) x.toString() x + ''使用空字符串,此方法简便好用...

  • JS 里的数据类型

    JS 里的数据类型 JS中有七种数据类型,分别是:number,string,boolean,undefined,...

  • 2019-01-20

    JS 里的数据类型 JavaScript 是一种弱类型或者...

  • JS 里的数据类型转换

    JS 里的数据类型转换 Js中的数据类型一共有7种,即number,string,boolean,underfin...

网友评论

    本文标题:JS 里的类型

    本文链接:https://www.haomeiwen.com/subject/wplbqftx.html