常用知识点
新建数组
- 创建长度为 n 的数组
- 创建 n 个值为 0 的数组
valueOf 与 toString
- valueOf 偏向于运算,toString 偏向于显示
- 对象转换时,优先调用 valueOf
- 强转字符串优先调用 toString,强转数字优先调用 valueOf
- 正常情况下,优先调用 toString
- 运算操作符情况下优先调用 valueOf
调用 valueOf
调用者 | 返回值 | 返回值类型 |
Array | 数组本身 | Array |
Date | 毫秒数 | Number |
Function | 函数本身 | Function |
Object | 对象本身 | Object |
String | 字符串 | String |
调用 toString
调用者 | 返回值 | 返回值类型 |
Array | 数组转字符串,相当于 Array.join() | String |
Boolean | 转字符串'true'、'false' | String |
Date | 字符串日期,如'Fri Dec 23 2016 11:24:47 GMT+0800 (中国标准时间)' | String |
Number | 数字字符串 | String |
Object | '[object Object]' | String |
String | 字符串 | String |
双等号左右两边的转换规则?
- 1、null == undefined 为 true
- 2、如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false 转换为 0,而 true 转换为 1;
- 3、如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值
- 4、如果一个操作数是对象,另一个操作数不是,则调用对象的 toString()方法,用得到的基本类型值按照前面的规则进行比较
数组常用的方法
方法 | 作用 | 是否影响原数组 |
push | 在数组后添加元素,返回数组长度 | ✅ |
pop | 删除数组最后一项,返回被删除项 | ✅ |
shift | 删除数组第一项,并返回被删除项 | ✅ |
unshift | 数组开头添加元素,返回数组长度 | ✅ |
reserve | 反转一个数组,返回修改后的数组 | ✅ |
sort | 排序一个数组,返回修改后的数组 | ✅ |
splice | 截取数组,返回被截取的区间 | ✅ |
join | 将一个数组所有元素连接成字符串并返回这个字符串 | ❌ |
concat | arr1.concat(arr2, arr3) 连接数组 | ❌ |
map | 操作数组每一项并返回一个新数组 | ❌ |
forEach | 遍历数组,没有返回值 | ❌ |
filter | 对数组所有项进行判断,返回符合规则的新数组 | ❌ |
every | 数组每一项都符合规则才返回 true | ❌ |
some | 数组有符合规则的一项就返回 true | ❌ |
reduce | 接收上一个 return 和数组的下一项 | ❌ |
flat | 数组扁平化 | ❌ |
slice | 截取数组,返回被截取的区间 | ❌ |
Math 的常用方法有哪些?
方法 | 作用 |
Math.max(...arr) | 取 arr 中的最大值 |
Math.min(...arr) | 取 arr 中的最小值 |
Math.ceil(小数) | 小数向上取整 |
Math.floor(小数) | 小数向下取整 |
Math.round(小数) | 小数四舍五入 |
Math.sqrt(num) | 对 num 进行开方 |
Math.pow(num, m) | 对 num 取 m 次幂 |
Math.random() * num | 取 0-num 的随机数 |
使用 Object.prototype.toString.call()
返回的结果
类型 | toString | 结果 |
Map | Object.prototype.toString.call(new Map()) | [object Map] |
Set | Object.prototype.toString.call(new Set()) | [object Set] |
Array | Object.prototype.toString.call([]) | [object Array] |
Object | Object.prototype.toString.call({})) | [object Object] |
Symbol | Object.prototype.toString.call(Symbol()) | [object Symbol] |
RegExp | Object.prototype.toString.call(new RegExp()) | [object RegExp] |
Function | Object.prototype.toString.call(function() {}) | [object Function] |
Null | Object.prototype.toString.call(null) | [object Null] |
Undefined | Object.prototype.toString.call(undefined) | [object Undefined] |
NaN | Object.prototype.toString.call(NaN) | [object Number] |