JavaScript面试题:数据类型判断与数组操作方法详解

需积分: 9 0 下载量 125 浏览量 更新于2024-07-03 1 收藏 1.03MB DOCX 举报
在IT面试中,关于JavaScript的数据类型判断和数组操作是常被考察的主题。以下是对这些知识点的详细解析: 1. **JS数据类型判断方法**: - ES5中的数据类型有:Number(数值)、Boolean(布尔)、String(字符串)、Undefined、Null。这些类型可以通过`typeof`运算符进行基础判断,但需要注意的是,`typeof`对于数组和对象(包括null)都返回"object",因此不能完全区分。 - ES6新增了Symbol类型,这是一种独一无二且不可变的标识符,`typeof`无法识别,但可以使用`Symbol.isConcatSpreadable`等属性来间接检测。 - ES11引入了BigInt类型,用于处理大整数,其类型检查需依赖`Number.isBigInt()`。 2. **引用数据类型检测**: - `Object.prototype.toString.call()` 是一个强大的工具,可以检测所有数据类型,它会返回一个格式如"[object Xxx]"的字符串,Xxx即对应的数据类型。此方法不受构造函数覆盖的影响,对所有数据类型都有精确的结果。 3. **基本数据类型和引用数据类型检测**: - `constructor`属性通常用来检测基本数据类型和引用数据类型,但要注意,由于类的原型可能导致constructor属性的混淆,使用时需谨慎。 - 使用 `instanceOf` 检测时,通过比较对象的原型链上是否存在指定构造函数的prototype属性,可以判断对象是否为该构造函数的实例。此方法只适用于引用类型,对基本数据类型无效。 4. **`typeOf` 的局限性**: - `typeOf` 可以检测基本数据类型(如字符串、布尔、数字),但对函数也会返回"object",无法区分数组和普通对象。这意味着`typeOf`在现代JavaScript中并不是最可靠的类型检测方法。 5. **数组常用方法**: - `push()` 和 `unshift()` 分别在数组的尾部和头部添加元素,这两个方法都会改变原数组。 - `pop()` 和 `shift()` 用于移除数组的最后一个元素和第一个元素,同时返回移除的元素值,若数组为空则返回`undefined`。 - `sort()` 方法用于对数组元素进行排序,可自定义排序规则,但注意它会直接修改原数组。 - `reverse()` 用于反转数组的顺序,也会影响原数组。 在面试中,理解并掌握这些数据类型判断的方法以及数组操作的细节,可以帮助求职者更好地应对面试官的问题,展现扎实的编程基础和理解能力。