前端面试测试卷:JS,CSS,Vue与跨域知识挑战

需积分: 9 0 下载量 69 浏览量 更新于2024-08-27 收藏 44KB DOCX 举报
"前端面试试题,涵盖JS,CSS和Vue的基础知识,包括单选题、多选题和简答题,涉及跨域、变量作用域、对象操作、比较运算符、存储机制、原型与原型链、闭包、数组操作、ES6特性及React/Vue组件生命周期等概念。" 在前端面试中,深入理解JavaScript是非常关键的。题目中提到了几个重要的知识点: 1. 跨域:同源策略是Web安全的核心策略之一,限制了Cookie、LocalStorage和IndexedDB等在不同源之间的共享。常见的跨域解决方案有CORS(跨域资源共享)、postMessage、JSONP以及WebSocket。选项D错误,因为http和https是不同的协议,因此它们不属于同源。 2. JavaScript变量作用域:题目中的代码展示了立即执行函数表达式(IIFE),创建了一个局部作用域。foo变量在全局作用域,bar变量在函数作用域内。因此,第一次alert会输出"helloworld",第二次由于bar不在全局作用域,会报错。所以答案是A。 3. 对象操作:setTimeout(foo, 0)实际上将foo函数放入事件队列,而非立即执行,所以不能等价于foo()。Object.assign()用于浅拷贝对象,仅复制第一层属性;for...in循环遍历可枚举属性,Object.keys()返回对象自身的所有可枚举属性的键,不包括原型链上的属性。因此,B和C是正确的。 4. 比较运算符:null和undefined在==运算符下相等,但在===严格比较下不等,null===null返回true,NaN与任何值都不相等,包括它自身,所以NaN==null和NaN===NaN都为false。Infinity加1仍为Infinity,所以F为false。所以,正确答案是A和C。 5. 简答题: - Cookies是存储在客户端的文本文件,主要用于保持状态,大小有限制且受同源策略限制;sessionStorage和localStorage也是客户端存储,前者在关闭窗口后清除,后者则持久保存,但两者同样受同源策略影响。 - prototype是对象的原型属性,用于添加或修改对象的共享属性和方法;__proto__是对象的内部属性,指向其构造函数的原型,它们在实现继承时密切相关。 - 闭包是指函数可以访问并操作其词法作用域内的变量,即使该作用域已不再存在。闭包常用于实现私有变量、模块化和记忆化等功能。 6. ES6的解构赋值:如示例所示,可以方便地从数组或对象中提取值,赋值给对应的变量。例如,`[last]=[peaks].reverse()`将数组倒序并赋值给last。对象语义增强包括类的定义、箭头函数、默认参数、解构赋值等,简化了代码结构,提高了可读性。 7. React或Vue组件生命周期:React组件有挂载阶段(如componentWillMount、render、componentDidMount)、更新阶段(如componentWillReceiveProps、shouldComponentUpdate、componentDidUpdate)和卸载阶段(componentWillUnmount)等生命周期方法,Vue也有类似的生命周期钩子,如beforeCreate、created、mounted、updated等,用于处理组件的不同阶段逻辑。 这些题目和知识点覆盖了前端开发中重要的JavaScript概念,是面试准备的重要内容。对于面试者来说,理解并能灵活运用这些知识,将大大提升面试成功的机会。