"这份文档是2023年大厂前端面试的基础篇,涵盖了JavaScript和HTML的相关知识,旨在帮助面试者准备技术面试。"
在JavaScript部分,文档详细讲解了:
1. 数据类型:JavaScript的数据类型包括原始类型(String, Number, Boolean, Null, Undefined, Symbol, BigInt)和引用类型(Object)。原始类型是不可变的,而引用类型可以改变其属性和值。
2. 数据类型检测:可以通过typeof、instanceof和Object.prototype.toString.call来检测数据类型。
3. null和undefined的区别:null是一个特殊的值,表示“无”或有意的空,而undefined表示变量未定义或值未赋给。
4. instanceof操作符:用于检查一个对象是否在其原型链上具有构造函数的prototype属性。
5. 获取安全的undefined值:通过`void 0`可以得到一个安全的undefined值,避免与其他变量混淆。
6. Object.is()与比较操作符:“===”更注重值的比较,不进行类型转换,而“==”会尝试进行类型转换后再比较。Object.is()在处理NaN和-0时与"==="有所不同,它能正确识别两者。
7. 包装类型:JavaScript中的Number, String, Boolean等原始类型在特定情况下会被自动包装成对应的对象,以便调用方法。
8. BigInt提案:为了解决JavaScript中整数溢出问题,引入了BigInt类型,支持任意大小的整数。
9. 空对象判断:通常使用`Object.keys(obj).length === 0 && obj.constructor === Object`来检查一个对象是否为空。
10. const对象属性:const声明的变量是常量,但如果是对象,其属性仍然可以修改。
11. new箭头函数:箭头函数没有自己的this,它会捕获其所在(即定义时所在的)上下文的this值,所以new一个箭头函数会导致错误。
12. 箭头函数的this:箭头函数的this取决于外部作用域,不绑定到函数自身。
13. 扩展运算符:用于将数组或类数组对象展开,常用于合并数组、复制数组以及在函数调用和对象字面量中。
14. Proxy:Proxy可用来拦截并控制对象的访问,实现自定义的行为,如数据访问、修改等。
15. 正则表达式:包括匹配字符串、分割字符串、替换字符串等功能。
16. 脚本延迟加载:包括async和defer属性,用于控制JavaScript的加载时机,优化页面性能。
17. DOM和BOM:DOM(Document Object Model)是HTML和XML文档的结构化表示,BOM(Browser Object Model)是浏览器对象的模型,提供了与浏览器交互的方法。
18. escape、encodeURI和encodeURIComponent的区别:它们都是编码URL字符,但范围和方式不同。
19. AJAX:Asynchronous JavaScript and XML,用于异步更新网页内容的技术,实现页面无刷新交互。
20. Promise、async/await:Promise解决回调地狱问题,async/await提供更优雅的异步编程方式。
21. 异步编程实现方式:包括回调函数、Promise、Generator、async/await等。
在HTML部分,文档涉及:
1. HTML语义化:使用合适的HTML标签来增强文档结构,提高可读性和可访问性。
2. DOCTYPE:声明文档类型,影响浏览器以何种模式解析HTML。
3. script标签的defer和async:defer延迟执行但按顺序执行,async异步执行不保证顺序。
4. 行内元素、块级元素和空元素:行内元素如span,块级元素如div,空元素如br,它们在页面布局和内容组织中各有用途。
这份文档详尽地覆盖了前端开发的基础知识,对于准备面试的开发者来说是一份宝贵的参考资料。