"js基础知识及面试题.pdf"
JavaScript(简称JS)是Web开发中不可或缺的一部分,主要负责客户端的交互和动态效果。以下是一些关键的知识点和面试题:
1. **原型与原型链**:
- JavaScript中的每个对象都有一个内部属性`[[Prototype]]`,通常通过`__proto__`访问,它链接到另一个对象,形成了原型链。
- `Object.prototype`位于原型链的顶端,所有对象都可以追溯到这个原型。
- `typeof`运算符用于检测对象的类型,`instanceof`用于检查对象是否属于某个构造函数的实例。
2. **作用域**:
- 全局作用域在整个脚本或函数外部定义,任何地方都能访问。
- 函数作用域在函数内部定义,只能在该函数内部访问。
- `let`、`const`和`var`声明变量,但它们的作用域不同:`var`是函数作用域,而`let`和`const`是块级作用域。
3. **闭包**:
- 闭包是一种特殊的函数,可以访问其自身、外部函数,甚至是全局作用域的变量,即使在其定义的环境已经销毁后。
- 闭包常用于封装变量和创建私有变量。
4. **异步处理**:
- JavaScript是单线程的,因此使用异步编程来处理耗时操作,如网络请求。
- 常见的异步方法有回调函数、Promise、async/await。
- 示例中的`setTimeout`函数会在指定时间后执行回调,不阻塞主线程。
5. **BOM(浏览器对象模型)**:
- BOM允许JavaScript操作浏览器特性,如`navigator`、`screen`、`location`和`history`对象。
- `navigator.userAgent`返回浏览器信息,`screen.width/height`获取屏幕尺寸,`location.href`、`location.protocol`等获取和修改URL。
6. **DOM(文档对象模型)**:
- DOM是HTML和XML文档的编程接口,将文档表示为树形结构。
- `DOM操作`包括选择元素、添加/删除元素、修改属性等,如`document.getElementById`、`document.createElement`等。
- `DOM API`包含`property`和`attribute`,两者在某些情况下有所不同。
- `property`对应于元素的JavaScript属性,而`attribute`对应于HTML属性。
- 示例中的`console.log`和`setTimeout`展示的异步执行顺序体现了事件循环(Event Loop)的概念。
7. **AJAX**:
- AJAX(异步JavaScript和XML)用于在不刷新整个页面的情况下与服务器交换数据并更新部分网页。
- 现代的`fetch` API或传统的`XMLHttpRequest`用于实现AJAX请求。
8. **HTML元素操作**:
- `<img>`标签用于插入图片,常用属性如`src`设置图片源,`alt`提供替代文本。
- 事件处理如`onClick`等允许JavaScript响应用户交互。
9. **面试题**:
- 面试题可能涉及上述所有概念,要求候选人理解和应用这些概念解决实际问题。
以上只是JavaScript基础的一部分,深入学习还包括错误处理、模块化、模板字符串、正则表达式等更多内容。熟悉并掌握这些概念对于JavaScript开发者来说至关重要。