方法的长度是形参的长度,并且如果形参被指定默认值的话,就失去一个长度,比如function(a=1,b,c)那么这个长度就是2,而不是3
以下哪些表达式的值为0?
A
(()=>{}).length
B
1 & 2
C
+[]
D
[1,2,-3].reduce((a, b) => a - b, 0)
正确答案:ABCD
(()=>{}).length; 获取方法形参个数,形参为0
1=0001 2=0010 按位与运算,同为1才为1,否则返回0
+[] 隐式类型转换,因为[]是对象,所以toPrimitive->valueOf->toString为'',结果就是+''===0
reduce对数组中的每个元素执行一个reducer函数(升序执行),将其结果汇总为单个返回值。a为累计器累计回调的返回值,b为数组的每一项元素,传入初始值0->0-(1)->(-1)-2->(-3)-(-3)->0
方法的长度是形参的长度,并且如果形参被指定默认值的话,就失去一个长度,比如function(a=1,b,c)那么这个长度就是2,而不是3,阮一峰的ES6讲的很清楚
=============================================
A 、(()=> {}).length 获取的是形参(注意是形参,不是实参)的个数,形参为0所以函数的length为0
如果是((a)=> {}).length,形参有一个所以函数的length为1 ;
如果是((a,b)=> {}).length,形参有两个所以函数的length为2
假如:function aaa(){}
console.log(aaa.length) ;//值为0,因为形参个数是0,所以函数的length为0
B、&是按位与运算。同位上两者都是1才为1,否则就是0
1的二进制表示 0001
2的二进制表示 0010
1&2结果是 0000 ,转成10进制也就是0
C、+[ ] 隐式类型转换。 +会让 [ ] 隐式转换成Number,转换过程如下:
D、reduce( function( total, currentVal, index, arr){}, intialVal ) 方法可以看做是一个累加器。
[1,2,3,4,5,6].reduce((a,b)=> a-b, 0);
//以上运行过程如下:
//a = 0, b = 1, 函数返回值val = -1 (有初始值,则a = initialVal = total = 0)
//a = -1, b = 2, val = -3
//a = -3, b = 3, val = -6
//a = -6, b = 4, val = -10
//a = -10, b = 5, val = -15
//a = -15, b = 6, val = -21 (最后函数返回值是-21)
[1,2,3,4,5,6].reduce((a,b)=> a-b);
//以上运行过程如下:
//a = 1, b = 2, 函数返回值val = -1 (无初始值,则a = 1, b =2)
//a = -1, b = 3, val = -4
//a = -4, b = 4, val = -8
//a = -8, b = 5, val = -13
//a = -13, b = 6, val = -19 (最后函数返回值是-19)
__EOF__

本文链接:https://www.cnblogs.com/longmo666/p/17835141.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)