2022前端面试必备:JS、Vue、Node等知识点解析

需积分: 3 0 下载量 67 浏览量 更新于2024-06-26 收藏 706KB PDF 举报
"这是一份全面的前端面试题集,涵盖了JavaScript、Vue.js、HTML、CSS和Webpack等多个关键领域的知识点,旨在帮助求职者准备技术面试。" 这份面试题资源包括了多个方面的重要概念,让我们逐一深入探讨: 1. **JavaScript 数据类型**: JavaScript 分为基本数据类型和引用数据类型。基本数据类型包括 Number、String、Boolean、Null、Undefined、Symbol 和 BigInt,而引用数据类型主要指对象、Array、Date、Function 和 RegExp。 2. **变量和函数声明的提升(Hoisting)**: JavaScript 中,变量声明和函数声明会被提升到它们所在作用域的顶部,但赋值操作不会被提升。函数声明的提升优先级高于变量声明,而在函数内部,用 var 声明的变量会覆盖同名的外部变量,匿名函数不会被提升。 3. **闭包(Closure)**: 闭包是一个能访问其自身作用域、外部函数作用域以及全局作用域的函数。它允许函数保存内部状态,即使在函数执行完毕后仍可访问。闭包有助于实现私有变量,但也可能导致内存泄漏。 4. **相等运算符(== 和 ===)**: == 是宽松相等,比较值是否相等,不考虑数据类型;而 === 是严格相等,不仅要比较值,还要比较数据类型。 5. **this 指针**: this 的指向取决于函数的调用方式。通常,它指向调用该函数的对象,但在构造函数中,它指向新创建的对象;在事件处理函数中,它指向触发事件的元素。 6. **数组和对象的遍历方法**: for...in 适用于遍历对象的属性,for 循环可用于数组和对象,forEach 用于数组迭代,for...of 用于遍历可迭代对象,如数组、Set 和 Map。 7. **map() 和 forEach() 区别**: map() 返回一个新数组,其结果是调用提供的回调函数后的元素值;forEach() 只用于迭代,没有返回值。 8. **箭头函数与普通函数的区别**: 箭头函数的 this 指向定义时所在的作用域,而不是执行时的作用域;不能用作构造函数;不绑定 arguments 对象,但可以用剩余参数(Rest Parameters)代替;不能包含 yield 命令,因此不能作为 Generator 函数。 9. **同源策略**: 同源策略是浏览器安全措施,只有当协议、域名和端口号完全相同的两个页面才能互相访问对方的资源。 10. **跨域解决方案**: - JSONP(JSON with Padding)利用动态插入 script 标签来规避同源策略; - document.domain + iframe 允许同一主域名下的不同子域名之间通信; - Node.js 中间件代理可以在服务器端处理跨域问题; - 后端设置响应头(CORS),允许指定的跨域请求。 11. **严格模式(Use Strict)**: 在严格模式下,JavaScript 强制执行更严格的语法检查,例如变量必须先声明再使用,函数参数不能有同名属性,禁止使用 with 语句,这有助于编写更安全和高效的代码。 这份面试题资源对前端开发者来说是宝贵的复习材料,涵盖了前端开发中的核心知识点,无论是对于面试还是日常学习都非常有帮助。