一:
10 原因:已经循环完了
二:
什么也不输出 会报错 原因:if形成了一个作用域,let不能声明重复变量
三:
let sortArr = arr.sort((a,b) => {return a+b;});
console.log(sortArr[0]);
四:
let:块级作用域:1.不能声明同名变量 2.声明形成块作用域
const:常量,1.一旦声明必须赋值,不能使用null占位。2.声明后不能再修改 3.如果声明的是复合类型数 据,可以修改其属性 4.不能声明同名变量 5.声明形成块作用域
var:全局变量: 1.var声明变量存在变量提升 2. 可以重复命名
五:
六:symbol类型是创造一个独一无二得数据类型,可以使得我们得数据对象中不想让外部访问得属性设置为symbol类型
七:深拷贝是将原有得对象和引用都复制一份,修改新对象时,旧对象不会被该百年
浅拷贝只复制值不复制引用,修改新对象时,旧对象同样被改变。因为它两用的同一个引用地址。
八:ts和js区别:
1.javascript是一个弱类型语言,Typescript是Javascript的一个超集,最大区别就是Ts提供了类型系统
2.TypeScript 只会进行静态检查,如果发现有错误,编译的时候就会报错。
3. 浏览器引擎和Node.js都能够直接运行JavaScript,但无法直接运行TypeScript
九:ts优点:强类型语言,增加了代码的可读性和可维护性。增强了编辑器和 IDE 的功能,包括代码补全、接口提示、跳转到定义、重构等
缺点:浏览器不识别 需要转义成js
十:引用计数:引用计数的含义是跟踪记录每个值被引用的次数。当声明了一个变量并将一个引用类型值赋给该变量时,则该值的引用次数就是1;如果同一个值又被赋给另一个变量,则该值的引用次数加1;如果包含对该值引用的变量又取得了另外一个值,则该值的引用次数减1。当该值的引用次数变为0时,则可以回收其占用的内存空间。当垃圾回收器下一次运行时,就会释放那些引用次数为0的值所占用的内存。
问题:循环引用
十一:标记整理过程:将垃圾数据标记后再整理数据
十二:新生代存储区垃圾回收过程:
新生代对象内存空间一分为二,分别是空间from和空间to,新生代对象会先存储在from空间,当一轮GC后,使用标记整理算法对from空间进行垃圾处理和空间内存优化,清除完成后,将from空间复制到to空间,并将from空间与to空间进行交换。
晋升:若是一轮GC后存活下来的新生代对象,会转变为老生代对象,来防止新生代对象内存空间占满的情况