2019年前端开发面试题整理.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
![preview](https://dl-preview.csdnimg.cn/87170197/0001-3730b8ae29cdd214a80cdcad323fab02_thumbnail-wide.jpeg)
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
【JavaScript基础】 JavaScript 是一种广泛用于Web开发的动态编程语言,主要负责前端开发中的交互逻辑。在面试中,JS基础通常包括对数组方法、原型、构造函数、实例以及原型链的理解,还有字符串方法和数据类型等核心概念。 1. **数组方法** - `map`:对数组中的每个元素应用一个函数,返回一个新的数组,不影响原数组。 - `forEach`:遍历数组,不返回值,不能中断循环,除非使用try/catch抛出错误。 - `filter`:根据提供的函数测试,返回满足条件的新数组。 - `some`:只要有一个元素满足条件,就返回true。 - `every`:所有元素都满足条件才返回true。 - `join`:用指定的分隔符连接数组元素,返回字符串。 - `push/pop`:在数组末尾添加/移除元素,改变原数组并返回被添加/移除的元素。 - `unshift/shift`:在数组开头添加/移除元素,改变原数组并返回被添加/移除的元素。 - `sort(fn)`:对数组元素进行排序,可以自定义比较函数,改变原数组。 - `reverse`:反转数组元素,改变原数组。 - `concat`:连接两个或更多数组,返回新数组,不影响原数组。 - `slice(start, end)`:截取数组的一部分,返回新数组,不改变原数组。 - `splice(start, number, value...)`:删除指定数量的元素,并可插入新元素,改变原数组。 - `indexOf/lastIndexOf(value, fromIndex)`:查找元素在数组中的索引,找不到则返回-1。 - `reduce/reduceRight(fn(prev, cur), defaultPrev)`:对数组元素两两进行累积计算,返回单一结果。 2. **原型/构造函数/实例** - **原型(prototype)**:每个对象都有一个原型,用于实现属性继承。可以通过`__proto__`访问,但此属性非标准,推荐使用`Object.getPrototypeOf(obj)`。 - **构造函数**:用于创建对象的函数,通过`new`关键字调用。 - **实例**:通过构造函数创建的对象,它们的`__proto__`指向构造函数的原型,`constructor`属性指向构造函数。 3. **原型链** 原型链是由原型对象形成的链条,通过`__proto__`属性连接。当查找对象属性时,会沿着原型链向上查找,直至找到属性或到达`Object.prototype`。如果需要修改原型上的属性,需通过`b.prototype.x = 2;`的形式,但会影响所有继承该对象的实例。 4. **字符串方法** - `charAt(num)`:获取指定位置的字符。 - `charCodeAt(num)`:获取指定位置字符的Unicode编码。 - `fromCharCode()`:根据Unicode值创建字符串。 - `indexOf()`/`lastIndexOf()`:查找字符出现的位置。 - `match()`:匹配字符串,返回匹配结果。 - `replace(a, b)`:替换字符串中的匹配项。 - `slice()`/`substring()`/`substr()`:截取字符串。 - `split()`:根据分隔符将字符串拆分成数组。 - `toLowerCase()`/`toUpperCase()`:将字符串转为小写/大写。 - `trim()`:去除字符串两端的空白字符。 5. **闭包** 闭包是指在函数内部定义的函数,可以访问外部函数的局部变量。当内部函数被外部调用时,即使外部函数已经执行完毕,其局部变量依然可以被内部函数访问。闭包可以用来保留函数的作用域和状态,实现数据封装和私有变量。 6. **数据类型** JavaScript 有两种数据类型:基本数据类型和引用数据类型。 - **基本数据类型**:Number、String、Boolean、Null、Undefined、Symbol(ES6)。它们按值访问,存储在栈中。 - **引用数据类型**:Object,包括数组、对象等,按引用访问,存储在堆中。对于对象的复制,存在浅拷贝和深拷贝的区别。浅拷贝只复制对象的引用,而深拷贝会创建新的对象并逐个复制属性。 了解这些基础概念对于前端开发者来说至关重要,它们是解决实际问题和设计高效代码的基础。在面试中,掌握这些知识点不仅能展示你的专业素养,也有助于你更好地理解和解答其他复杂问题。
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/release/download_crawler_static/87170197/bg1.jpg)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/685a9662e294460aabe14011440192a4_m0_71272694.jpg!1)
- 粉丝: 8366
- 资源: 2万+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)