Javascript 为什么作者在文件之前使用波浪线?
我正在学习node和express编程,并在以下位置找到了一个非常好的示例: 但我找到了一条线,并没有完全理解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) }) 在文件前面的第
// 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短(但我不太清楚)这应该是一个答案。作业不应该是表达式吗?作业不应该是表达式吗?