var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6]();
答:结果为 10,因为这里通过 var 定义的变量 i 为一个全局变量,function 方法调用时,for 循环已经执行完成,i 已经变成了 10,所以结果为 10
var tmp = 123;
if (true) {
console.log(tmp);
let tmp;
}
答:结果会报错,因为只要块级作用域内存在 let 命令,它所声明的变量就“绑定”这个区域,不再受外部的影响,而使用 let 声明的变量不会被提升,打印 tmp 时,还未声明,所以会报错
var arr = [12, 24, 32, 89, 4];
答:
var arr = [12, 24, 32, 89, 4];
const minValue = Math.min(...arr);
console.log(minValue); // 4
答:
var a = 10;
var obj = {
a: 20,
fn() {
setTimeout(() => {
console.log(this.a);
});
}
};
obj.fn();
答:结果为 20,因为 setTimeout 中定义的方法使用了箭头函数定义,会改变 this 的指向为定义它时,所处上下文的对象的 this 指向,即为调用它的 fn 方法的 this 指向,而 fn 方法的定义为 function fn () {} 的缩写,为普通函数,fn 中的 this 指向调用它的 obj, 所以 this.a === obj.a === 20
// 而 fn 方法的定义为 function () {} 的缩写,为普通函数,fn 中的 this 指向调用它的 obj, 所以 this.a === obj.a === 20
答:
答:浅拷贝是将对象的每个属性依次复制,但是当对象的属性值是引用类型时,实质复制的是其引用地址,当引用指向的值改变时也会跟着变化。
深拷贝复制变量值,对于引用数据,则递归至基本类型后,再复制,深拷贝后的对象与原来的对象是完全隔离的,互不影响,对一个对象的修改并不会影响另一个对象
答:TypeScript 是基于 JavaScript 之上的一门编程语言,是 JavaScript 的超集,最终会编译成 JavaScript,解决了 JavaScript 自有类型系统的不足,大大提高代码的可靠程度,任何一个 JavaScript 运行环境都支持 TypeScript
答:优点:1. 代码更智能,编码更准确,可以在编译阶段暴露出错误,避免大部分的错误;2. 支持自动转换 JavaScript 的新特性,可以立即使用新特性;3. 任何一个 JavaScript 运行环境都支持;4. 作为一门完整的编程语言,功能更强大,生态更健全、更完善;5. TypeScript 属于【渐进式】,可以快速应用在项目中。 缺点:1. 相比于 JavaScript 本身多了很多概念,提高学习成本; 2. 项目初期,TypeScript 会增加一些成本;
答:引用计数的原理是设置引用数,引用关系改变时修改引用数字,判断当前引用数为 0 时立即回收;
引用计数的优点:
1. 可以即时回收垃圾对象
引用计数的缺点:
1. 无法回收循环引用的对象
答:标记整理算法的工作流程是:
1. 遍历所有对象标记找标记活动对象,找到所有可达对象,递归标记
答: 新生代对象回收过程采用复制算法 + 标记整理,新生代内存区分为两个等大小空间,使用空间为 From,空闲空间为 To,活动对象存储在 From 空间,标记整理后将活动对象拷贝至 To,From 与 To 交换空间完成释放
答:标记算法算法在老生代对象回收中执行标记清除及标记整理后使用;
工作原理是将连续的垃圾回收拆分成多个小步与程序运行交替完成来进行效率优化。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。