Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

💪第6期第1题:[,,,]的长度 #37

Open
LinDaiDai opened this issue Jun 30, 2020 · 0 comments
Open

💪第6期第1题:[,,,]的长度 #37

LinDaiDai opened this issue Jun 30, 2020 · 0 comments

Comments

@LinDaiDai
Copy link
Owner

[,,,]的长度

(题目来源: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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant