2

私はノードとエクスプレスプログラミングを学んでおり、https ://github.com/madhums/node-express-mongoose-demo で非常に良い例を見つけています。

しかし、私は線を見つけて、完全には理解していません。

// Bootstrap models
var models_path = __dirname + '/app/models';
fs.readdirSync(models_path).forEach(function (file) {
    if (~file.indexOf('.js')) require(models_path + '/' + file)
})

ファイルの前の 4 行目に、チルダ ( ~ ) 演算子があります。JavaScriptの本を調べたところ、ビット単位のNOTであるとだけ書かれています。

なぜ著者はここでチルダを使用するのですか? チルダを使用しない場合、同じことを別の方法で表現できますか?

ありがとうございました!

4

2 に答える 2

3

チルダはビット単位の not 演算子です。この.indexOf()メソッドは、見つかった一致のインデックスを文字列 (または配列) で返す-1か、部分文字列が見つからなかった場合に返します。

0 == falseチルダは変換-1に使用される場合があるため、次のように0なります。

> ~1
-2
> ~0
-1
> ~-1
0

~file.indexOf('.js')file.indexOf('.js') === -1またはと同等file.indexOf('.js') < 0です。最後の 2 つの例は、最初の例よりも明確に理解できます。

于 2014-04-08T09:06:09.127 に答える