Javascript 为什么作者在文件之前使用波浪线?

Javascript 为什么作者在文件之前使用波浪线?,javascript,node.js,tilde,Javascript,Node.js,Tilde,我正在学习node和express编程,并在以下位置找到了一个非常好的示例: 但我找到了一条线,并没有完全理解 // Bootstrap models var models_path = __dirname + '/app/models'; fs.readdirSync(models_path).forEach(function (file) { if (~file.indexOf('.js')) require(models_path + '/' + file) }) 在文件前面的第

我正在学习node和express编程,并在以下位置找到了一个非常好的示例:

但我找到了一条线,并没有完全理解

// 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

为什么作者在这里使用tilde? 如果不使用tilde,我可以用其他方式来表达同样的事情吗

谢谢大家!

瓷砖是最合适的。
.indexOf()
方法返回字符串(或数组)中找到的匹配项的索引,如果未找到子字符串,则返回
-1

因为
0==false
tilde可用于在
0
中转换
-1
,反之亦然:

> ~1
-2
> ~0
-1
> ~-1
0
~file.indexOf('.js')
相当于
file.indexOf('.js')===-1
file.indexOf('.js')<0
。最后两个示例更清楚地理解了第一个示例。

Tilde是第一个示例。
.indexOf()
方法返回字符串(或数组)中找到的匹配项的索引,如果未找到子字符串,则返回
-1

因为
0==false
tilde可用于在
0
中转换
-1
,反之亦然:

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

~file.indexOf('.js')
相当于
file.indexOf('.js')===-1
file.indexOf('.js')<0
。最后两个示例更清楚地理解了第一个示例。

此语句有助于在项目中仅包含.js文件。我们可以用这个表达式来代替这个语句

 if (file.indexOf('.js') !== -1) require(models_path + '/' + file)
让我们看看你的例子 我们在/app/models/:article.js和user.js中有2个文件

对于acticle.js

if (~('acticle.js'.indexOf('.js'))) // -8 TRUE
if ('acticle.js'.indexOf('.js')) // 7   TRUE
对于user.js

if (~('user.js'.indexOf('.js'))) // -5 TRUE
if ('user.js'.indexOf('.js')) // 4   TRUE
在我们的例子中,这个值等于真,这个文件将包括在内

这个station~file.indexOf('.js')解决了当我们有一个没有名称的文件,比如'.js'时的问题

if ('.js'.indexOf('.js')) // 0 FALSE but file exists and have .js extension
if (~('.js'.indexOf('.js'))) // -1 TRUE

如你所见。它将包含在项目中。

此语句帮助仅将.js文件包含在项目中。我们可以用这个表达式来代替这个语句

 if (file.indexOf('.js') !== -1) require(models_path + '/' + file)
让我们看看你的例子 我们在/app/models/:article.js和user.js中有2个文件

对于acticle.js

if (~('acticle.js'.indexOf('.js'))) // -8 TRUE
if ('acticle.js'.indexOf('.js')) // 7   TRUE
对于user.js

if (~('user.js'.indexOf('.js'))) // -5 TRUE
if ('user.js'.indexOf('.js')) // 4   TRUE
在我们的例子中,这个值等于真,这个文件将包括在内

这个station~file.indexOf('.js')解决了当我们有一个没有名称的文件,比如'.js'时的问题

if ('.js'.indexOf('.js')) // 0 FALSE but file exists and have .js extension
if (~('.js'.indexOf('.js'))) // -1 TRUE

如你所见。它将包含在项目中。

indexOf()
将返回
-1
,位求反
-1
0
。比
==-1
@Adriano短(但我不太清楚)这应该是一个答案
indexOf()
将返回
-1
,位否定
-1
0
。比
==-1
@Adriano短(但我不太清楚)这应该是一个答案。作业不应该是表达式吗?作业不应该是表达式吗?