在面试题的第二阶段,重点考察的是对JavaScript编程基础知识的深入理解和实践经验。以下知识点将帮助你更好地准备面试:
### 1. 数组去重方法
面试中可能会问到如何在JavaScript中实现数组的去重,提供了两种常见方法:
**方法一:创建新数组**
通过遍历原数组,检查元素是否已存在于新数组中。如果不存在,则将其添加。这种方法适用于不考虑元素顺序的情况。
```javascript
function norepeat(arr) {
var newArr = [];
for (let i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
return newArr;
```
**方法二:排序后删除重复项**
先对数组进行排序,然后通过比较相邻元素,如果相同则删除并调整索引。此方法会改变原数组顺序。
```javascript
function norepeat(arr) {
arr = arr.sort();
for (let i = 0; i < arr.length; i++) {
if (arr[i] === arr[i + 1]) {
arr.splice(i, 1);
i--; // 由于删除元素,需重新调整索引
}
}
return arr;
```
### 2. JavaScript数据类型
面试时可能会询问关于数据类型的分类及其特性:
- **基本数据类型**:
- Number:数值型(包括整型和浮点型)
- String:字符串型
- Boolean:布尔型
- undefined:表示未定义
- null:表示空值
- Symbol:唯一标识符,用于避免属性名冲突
- BigInt:大整数类型
- **内存分配**:
- 基本数据类型直接在栈中存储,不涉及引用。
- 引用数据类型在栈中存储的是数据的地址,指向堆中的实际数据。
- **数据类型判断**:
- `typeof`:仅适用于基本数据类型,对引用数据类型(如数组和对象)返回“object”。
- `Array.isArray()`:用于检测是否为数组,返回布尔值。
### 3. 判断数据类型和实例方法
- **`typeof`与`instanceof`**:
- `typeof`只能识别基本数据类型,对于数组和对象等引用类型会误报。
- `instanceof`用来检测一个对象是否属于某个构造函数创建的对象类型,如`x instanceof Array`。
- **数组和对象的判断**:
- 对于数组,使用`Array.isArray()`。
- 对于对象,可以使用`typeof`(虽然可能返回“object”,但通常不会混淆),或者检查某个元素是否存在该对象的属性(例如,`if('length' in obj)`)。
掌握这些知识点,能让你在面试中展现出扎实的JavaScript基础和解决问题的能力。