关于JS数组some的一个写法
直入主题,some() 方法用于检测数组中的元素是否满足指定条件(函数提供)语法是这样的:array.some(function(currentValue,index,arr),thisValue)
我写了一个关于数组扁平化flat的demo如下:
<script>
function flat(arr){
const isDeep = arr.some(item =>item instanceof Array)
console.log(isDeep)
if(!isDeep){
return arr
}
const res = Array.prototype.concat.apply([],arr)
return flat(res)
}
const res = flat(,,45,6],6])
console.log(res)
</script>
我上面这样写得出的结果是正常的,但是代码中我多加了一个花括号(红色字体),打印出的结果就不对了,像这样:
const isDeep = arr.some(item =>{item instanceof Array})
我找了好久原因才发现是这里加的括号导致的,这个就是一个函数的简写呀,为啥结果不一样。本人才学js不久,大佬如果看到见笑了,别嫌弃俺菜,希望得到大佬的解析,我也能取个经学习学习,我不怕嘲笑,只要大佬愿意教,我就学
这个是箭头函数,你加了这个花括号后,它把花括号里面的代码当成了是函数的执行体,里面代码执行了,但是没有返回值,返回就是undefined;如果你去掉了花括号,它就是一种简写,把item instanceof Array的值作为返回值。
如果你要加花括号,你需要这个样写:
arr.some(item =>{
return item instanceof Array
}) yue_tai_mei 发表于 2022-9-9 07:28
这个是箭头函数,你加了这个花括号后,它把花括号里面的代码当成了是函数的执行体,里面代码执行了,但是没 ...
妙蛙,简洁明了。明白了明白了,感谢感谢。{:1_919:}大佬早上好 你这个问的应该是 函数表达式简写的问题 有用的。。
页:
[1]