Что означает `` `в javascript

Я просматриваю код выражения и вижу этот код https://github.com/visionmedia/express/blob/master/lib/application.js#L490

if ('all' == envs || ~envs.indexOf(this.settings.env)) fn.call(this);

что означает ~ до envs

Ответы

Ответ 1

Если вам интересно, почему он используется в этой ситуации, это краткое описание того, нашел ли метод indexOf что-то.

indexOf возвращает -1, когда он не находит что-либо, и >= 0, когда он это делает. Поэтому, когда вы делаете ~ -1, вы получаете 0 (значение фальшивки), и когда вы делаете это на что-либо еще, вы получаете правдивое значение.

Итак:

if( ~str.indexOf( "something" ) ) {
...
}

Это более короткий способ сказать

if( str.indexOf( "something" ) !== -1 ) {
...
}

Если вам интересно, как -1 NOT из 0, прочитайте здесь