💪第6期第1题:[,,,]的长度
Opened this issue · 0 comments
LinDaiDai commented
[,,,]的长度
(题目来源:https://github.com/CavsZhouyou/Front-End-Interview-Notebook)
咋了小伙伴们,感觉这道题目很简单是吗?哈哈,数一数逗号的间隙好像就能得出答案了,比如这样:
但是这道题的答案并不是4
哟,而是3
。
console.log([,,,].length) // 3
所以最终我们是需要把它想象成这样的:
也就是最后一个逗号的后面是不算一项的。
这里其实涉及到了一个名为:尾后逗号
的概念,或者说是叫做终止逗号
。上面👆这道题好像看不出它有什么作用,让我来看看实际上为什么会有这个用法。
比如现在你的项目中这么一个文件:
config.js:
const types = [
{
name: '帅'
},
{
name: '阳光'
},
]
export { types };
大家可以看到,我在阳光
这一项的的后面是多加了一个","
的,此时我将这个代码提交到git
上并标记为版本1
。
如果这时候types
中又要添加一项名为"可爱"
的配置项,我只需要在它下面再加上就行了,不需要去改动到原来代码,此时你提交的代码的diff
是长这样的:
const types = [
{
name: '帅'
},
{
name: '阳光'
},
+ {
+ name: '可爱'
+ },
]
export { types };
大家可以看到,只有简单的三行增量代码,如果你没有使用尾后逗号
的话,你提交的代码的diff
会是这样:
const types = [
{
name: '帅'
},
{
name: '阳光'
- }
+ },
+ {
+ name: '可爱'
+ }
]
export { types };
因此我们可以得出尾后逗号
它的作用:
使得版本控制更加清晰,以及代码维护麻烦更少。
(当然,这种用法在.json
后缀的文件中是不能用的哈,因为JSON
它严格遵循它自己的语法要求)
所以回归到这道题中来,像这种使用了多于一个尾后逗号的数组,我们就称之为稀疏数组
,希疏数组它的长度是等于逗号的数量的。
因此:
console.log([,,,].length) // 3