一个代码简化的小细节

98 阅读1分钟
Fun(x => {
    console.log(x)
})

以上代码可以简化为

Fun(console.log)

可以进行这种简化的前提是:两个形参x接收的参数个数是相等的

举个反例:

const array = ['1','2','3'].map(parseInt) //代码1
console.log(array)

以上代码执行的结果是: [1,NaN,NaN]

原因是map默认是接收3个参数,但parseInt默认接收是1个

如果按照代码1的写法,则代码等价于以下代码:

const array = ['1','2','3'].map(item,i,arr)=>{
    return parseInt(item,i,arr)
}

以上代码执行过程为:

A: parseInt('1',0,arr)

B: parseInt('2',1,arr)

C: parseInt('3',2,arr)

由于A过程中第二个参数为0,则为无效参数,所以第一行能成功解析为1

B、C过程的代码意思分别问:把字符串2作为1进制的数作为解析、把字符串3作为2进制的数作为解析,所以都会输出NaN