系统函数
狐七 3/22/2022 running
# 1. ['1', '2', '3'].map(parseInt) 输出什么?
map
真正的答案是 [1, NaN, NaN]。
map 函数的第一个参数 callback。
arr.map(callback: (value: T, index: number, array: T[]) => U, thisArg?: any)
这个 callback 一共可以 接收三个参数:
- 第一个参数代表当前被处理的元素
- 第二个参数代表该 元素的索引
parseInt
parseInt是用来解析字符串的,使字符串成为指定基数的整数。
parseInt(string, radix)
接收两个参数:
第一个表示被处理的值(字符串)
第二个表示为解析时的基数。
parseInt('1', 0) // radix为0时,且 string 参数不以“0x”和“0”开头时,按照10为基数处理,这个时候返回1
parseInt('2', 1) // 基数为1(1进制),表示的数中最大值小于2,所以无法解析,返回 NaN
parseInt('3', 2) // 基数为2(2进制),表示的数中最大值小于3,所以无法解析,返回 NaN
# 2. for循环如何输出 0 - 9
for循环加异步,如何输出0-9
for (var i = 0; i< 10; i++){
setTimeout(() => {
console.log(i)
}, 1000)
}
1
2
3
4
5
2
3
4
5
解法一:let
for (let i = 0; i< 10; i++){
setTimeout(() => {
console.log(i)
}, 1000)
}
1
2
3
4
5
2
3
4
5
解法二:闭包
for (var i = 0; i< 10; i++){
((i) => {
setTimeout(() => {
console.log(i)
}, 1000)
})(i)
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# 3. 下面代码中 a 在什么情况下会打印 1?
下面代码中 a 在什么情况下会打印 1?
var a = ?
if(a == 1 && a == 2 && a == 3){
console.log(1)
}
1
2
3
4
2
3
4
查看解析
- 考察的点是,在和数字比较的时候进行类型转换的时候,会访问起valueOf和toString属性
- 如果和数字比较,两者都有的情况下,valueOf的优先级高于toString
// 方法一:toString
var a = {
i: 1,
toString() {
return a.i++;
}
}
// 方法二:valueOf
var a = {
i: 1,
valueOf() {
return a.i++;
}
}
// 注意:valueOf和toString都存在的时候,比较数字valueOf优先级高
// 方法三:数组+toString
let a = [1,2,3]
a.toString = a.shift
if( a == 1 && a == 2 && a == 3 ) { console.log(1)}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 4. 数组用sort原生函数输出什么?
[3, 15, 8, 29, 102, 22].sort()
1
查看答案
[3, 15, 8, 29, 102, 22].sort() // [102, 15, 22, 29, 3, 8]
[3, 15, 8, 29, 102, 22].sort((a,b) => b - a) // [102, 29, 22, 15, 8, 3]
1
2
2
根据 MDN 上对 Array.sort()的解释,默认的排序方法会将数组元素转换为字符串,然后比较字符串中字符的 UTF-16 编码顺序来进行排序。 所以'102' 会 排在 '15' 前面。
# 5. 下面的代码输出什么?
var obj = {
'2': 3,
'3': 4,
'length': 2,
'splice': Array.prototype.splice,
'push': Array.prototype.push
}
obj.push(1)
obj.push(2)
console.log(obj)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
查看答案
结果是length为4的伪数组(ArrayLike)
// Object(4) [empty × 2, 1, 2, splice: ƒ, push: ƒ]