js基础问题
想知道下面三种写法结果不同的原因,希望大佬能帮忙解答下
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':'男'}]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
实现一个简易的map函数
map执行流程
问题解答
没有返回值
,新数组中push的是undefined
没有返回值
,返回结果与第一个相同,但是原数组发生了变化,这是因为在callback.call()中的参数是对原数组的浅拷贝
,操作的时候会改变原数组有返回值
,每次循环都会把操作后的结果push到新数组,数组在调用map会返回操作后的新数组赋值给a2这里主要是考察map的用法,https://developer.mozilla.org..., array.map(fn)遍历array,返回值是一个数组,该数组的每个值都是array对应的值经过fn处理后的【返回的结果】
首先我们来看你的示例1,fn是处理了item,但是没有抛出任何返回值,所以a的结果是[undefined](我在浏览器里面打印的是这个,不是你示例中的[null])
示例2,跟上例相同,fn处理了item,但是没有返回,且arr1被改动,此时你二次将arr1赋值给a1,a1自然改变了
示例3,就是map的标准用法,fn返回了item,被a2接收,所以可以正常打印值
就值传递和函数返回的问题。
如果不是引用类型就不会改变。
函数返回,如果你不return 值就是 undefined了。
简单的说,map里面如果不return,他就是一个for循环;如果return,那就是把return的东西组成了一个新的数组。