本篇内容主要包括一下几点
1. 数据类型的分类和判断
-
基本(值)类型
- Number ----- 任意数值 -------- typeof 返回i字符串
- String ----- 任意字符串 ------ typeof
- Boolean ---- true/false ----- typeof
- undefined — undefined ----- typeof/===
- null -------- null ---------- ===
- symbol------symbol(str) ------typeof
-
对象(引用)类型
- Object ----- typeof/instanceof
- Array ------ instanceof
- Function ---- typeof/instanceof
-
typeof ,instanceof === 用来判断数据类型
-
js内存的主要俩大类:
- 栈内存:主要存放全局/局部变量的内存
- 堆内存:可以存放的是对象的内容
- 注意:如果是引用类型:栈内存中有一块空间存放着堆内存某个对象的地址信息
2. 相关问题
- var a = xxx, a内存中到底保存的是什么?
- xxx 是一个基本数据时:存放的就是一个基本值
- xxx是一个对象时:存放的就是一个对象在堆内存中存在的地址值
- xxx是一个变量时:参考1,2
- 引用变量赋值问题:
这个比较简单:就是如果俩个变量指向的时同一个对象,那么通过一个变量来改变对象的值,另外一个变量指向的值也会发生改变(本质就是指向的同一个对象)。 - js调用函数在传递变量参数时,是值传递还是引用传递?
本质是是值传递(但是这个值可能是一个基本值,也可能是一个对象的地址)。如果把后一种看成是引用传递,那么表示值传递和引用传递。 - js引擎是如何管理内存的?
- 当变量被声明时:首先是分配需要的内存;然后使用分配到的内存;不需要时将其释放并归还。
- 释放内存
- 为函数分配的栈空间内存:函数执行完自动释放。
- 存储对象的堆空间:当内存没有引用指向时,对象就会成为垃圾对象。垃圾回收器后面会定时进行释放内存。
来源:CSDN
作者:SeanHit
链接:https://blog.csdn.net/l_x_cser/article/details/104727322