1. ホーム
  2. javascript

[解決済み] javascriptで `~` は何を意味するのでしょうか?

2022-02-09 23:29:32

質問

expressのコードを表示すると、次のようなコードが表示されます。 https://github.com/visionmedia/express/blob/master/lib/application.js#L490

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

というのは ~ の前の意味です。 envs

解決方法は?

なぜそのような場面で使われるのかと思われた方のために説明すると、それは indexOf メソッドは何かを発見しました。

indexOf は、何も見つからなかったら-1、見つかったら>=0を返します。つまり、~-1を実行すると0(偽の値)が得られ、それ以外を実行すると真実の値が得られます。

だから

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

というのは、もっと短い言い方で

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

もしあなたが、-1 が 0 の NOT であることを不思議に思っているなら、次の記事を読んでください。 こちら