💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
#### 1. 理解词法作用域和动态作用域 1. 作用域:就是一套规则,用于确定在何处以及如何查找变量的规则 2. 词法作用域:也就是静态作用域,JS采用的是词法作用域,函数的作用域在函数定义的时候就决定了 3. 动态作用域:函数的作用域是在调用的时候确定的 4. 案例:因为JS是采用词法作用域,所以foo函数在定义的时候已经确定了,value // 1 ``` var value = 1; function foo() { console.log(value); } function bar() { var value = 2; foo(); } bar(); ``` #### 2. 理解JavaScript的作用域和作用域链 1. 作用域:JS中分为全局、局部、块级(ES6+)三个作用域 2. 作用域最大的作用就是隔离变量,不同作用域下的同名变量不会有冲突 3. 作用域链:变量在查找过程中,由最近的作用域一直查找到顶层作用域,所形成的链为作用域链 #### 3. 理解JavaScript的执行上下文栈,可以应用堆栈信息快速定位问题 1. #### 4. this的原理以及几种不同使用场景的取值 1. this的取值取决于函数的四种调用方式 1. 函数直接调用:this指向window 2. 函数由对象调用:this指向所有的对象 3. 函数由call apply bind调用,显示更改指向:this指向传入的对象,也就是第一个参数 4. 函数由new创建构造函数:this指向新创建的实例对象 #### 5. 闭包的实现原理和作用,可以列举几个开发中闭包的实际应用 1. #### 6. 理解堆栈溢出和内存泄露的原理 ,如何防止 1. 堆栈溢出:当程序运行需要的内存超过了系统所分配的内存时,就会抛出内存溢出的错误 2. 内存泄露: 1. 内存泄露积累过多就容易造成内存溢出 2. 占用的内存没有及时释放 3. 开发中常见的内存泄露 1. 闭包 2. 占用内存很大的全局变量 3. 没有及时清理的计时器/定时器 #### 7. 如何处理循环的异步操作 1. #### 8. 理解模块化解决的实际问题,可列举几个模块化方案并理解其中原理 1.