理解双感叹号

Hor*_*ray -1 javascript

我试图了解双重感叹号到底是做什么的.是的,我看到了这个问题,有很多答案.所以我原则上知道它的作用,但我不知道为什么人们需要使用它.

据我所知,它将值转换为布尔值.所以我想说我有以下代码:

var myBool = !!(index === 0 || index > len);
Run Code Online (Sandbox Code Playgroud)

我不能忽略它!!,我会得到相同的结果:

var myBool = (index === 0 || index > len);
Run Code Online (Sandbox Code Playgroud)

通过添加我可以获得什么!!?它不是一个布尔值吗?

Bar*_*mar 6

目的!!是将任何类型的truthy或falsey值规范化为相应的布尔值.

如果已经知道该值是布尔值,例如比较运算符的结果,那么它就没有任何意义,而且它是多余的.所以在你给出的例子中它没用.