想知道下面三种写法结果不同的原因,希望大佬能帮忙解答下
let arr=[
{
name:'小明',
age:12
}
]
let a= arr.map(item=>{
item['sex']='男'
})
console.log(a)//[null]
///////////////////////////////////
let arr1=[
{
name:'小明',
age:12
}
]
arr1.map(item=>{
item['sex']='男'
})
let a1= arr1
console.log(a1)//[{'name':'小明','age':12,'sex':'男'}]
//////////////////////////////////
let arr2=[
{
name:'小明',
age:12
}
]
let a2= arr2.map(item=>{
item['sex']='男'
return item
})
console.log(a2)//[{'name':'小明','age':12,'sex':'男'}]
实现一个简易的map函数
map执行流程
问题解答
没有返回值
,新数组中push的是undefined
没有返回值
,返回结果与第一个相同,但是原数组发生了变化,这是因为在callback.call()中的参数是对原数组的浅拷贝
,操作的时候会改变原数组有返回值
,每次循环都会把操作后的结果push到新数组,数组在调用map会返回操作后的新数组赋值给a2