我有这段代码(取自这个问题):
var walk = function(dir, done) {
var results = [];
fs.readdir(dir, function(err, list) {
if (err)
return done(err);
var pending = list.length;
if (!pending)
return done(null, results);
list.forEach(function(file) {
file = path.resolve(dir, file);
fs.stat(file, function(err, stat) {
if (stat && stat.isDirectory()) {
walk(file, function(err, res) {
results = results.concat(res);
if (!--pending)
done(null, results);
});
} else {
results.push(file);
if (!--pending)
done(null, results);
}
});
});
});
};
Run Code Online (Sandbox Code Playgroud)
我正在努力遵循它,我想我理解除了接近结尾的所有内容!--pending.在这种情况下,该命令的作用是什么?
编辑:我感谢所有进一步的评论,但这个问题已被多次回答.不管怎么说,还是要谢谢你!
我理解这是一个主观问题,所以如果需要关闭我会道歉,但我觉得它经常足以让我想知道是否一般偏好一种形式而不是另一种形式.
显然,最好的答案是"重构代码,这样你就不需要测试虚假",但有时候没有简单的方法可以这样做,而"else"分支就是继续处理.因此,当您必须具有"if not false"构造时,这是首选标准:
不是运营商
if (!value)
Run Code Online (Sandbox Code Playgroud)
或者测试是假的
if (value == false)
Run Code Online (Sandbox Code Playgroud) 我一直看到像这样检查的代码
if (IsGood == false)
{
DoSomething();
}
Run Code Online (Sandbox Code Playgroud)
或这个
if (IsGood == true)
{
DoSomething();
}
Run Code Online (Sandbox Code Playgroud)
我讨厌这种语法,并始终使用以下语法.
if (IsGood)
{
DoSomething();
}
Run Code Online (Sandbox Code Playgroud)
要么
if (!IsGood)
{
DoSomething();
}
Run Code Online (Sandbox Code Playgroud)
有没有理由使用' == true'或' == false'?
这是一个可读性的东西吗?人们只是不了解布尔变量?
另外,这两者之间是否有任何性能差异?
我已经看过两种方式,但哪种方式更像Pythonic?
a = [1, 2, 3]
# version 1
if not 4 in a:
print 'is the not more pythonic?'
# version 2
if 4 not in a:
print 'this haz more engrish'
Run Code Online (Sandbox Code Playgroud)
哪种方式被认为是更好的Python?
在浏览我的组织的源代码库时,我遇到了这个小宝石:
RawParameterStorage[!ParameterWorkingIdx][ParameterDataOffset] = ...
Run Code Online (Sandbox Code Playgroud)
这是有效的代码吗?(它编译)这里的感叹号是做什么的?
反转~运算符可能有意义,因为它通常与!布尔表达式中的not 运算符混淆.但是,将not !运算符强加于数组索引似乎没有逻辑意义.有什么想法吗?
有人可以向我解释为什么面具根本没有向右移动吗?您可以使用任何代替1的结果,结果将是相同的.
unsigned mask = ~0 >> 1;
printf("%u\n", mask);
Run Code Online (Sandbox Code Playgroud) 我来自ac风格的语言,所以我很自然地使用!=不相等,但当我来到Python时,从我阅读的文档中,我了解到为此目的使用了<>运算符.
最近,我看到很多代码使用!=,所以我的问题是,如果其中一个优先于另一个,或者其中一个被弃用.
另外,我想知道它们之间是否有任何区别.
我怎么能在mysql中检查一个值是否在另一个表中的多个字段内?
就像是
SELECT * FROM table WHERE concat('%',value,'%') NOT LIKE IN(SELECT field FROM anothertable)
Run Code Online (Sandbox Code Playgroud)
但我不认为这是对的,不是吗?
除了指示显式转换之外,在JavaScript中使用double not运算符是否有任何优势?它似乎在某些时候,人们喜欢使用double来检查新API的存在,但我从来没有读过任何优势.
if(!!window.File)
// The File API is supported.
else
// Your browser sucks.
Run Code Online (Sandbox Code Playgroud)
我读过的一件事是它是一种简单,模糊的方式来将类型转换为boolean,但是,当在此上下文中使用时,对象将被自动强制转换为boolean,因为我们正在检查它是否已定义.
简而言之,为什么人们会在引擎的顶部进行两次布尔操作?
我知道这!=是"不平等",但是当你有这个时它意味着什么:
if(!$something)
Run Code Online (Sandbox Code Playgroud)
我的第一个猜测是与异常有关,但环顾谷歌并没有返回任何东西.
那这是做什么的呢?
not-operator ×10
javascript ×2
python ×2
arrays ×1
bit-shift ×1
boolean ×1
c ×1
c# ×1
c++ ×1
decrement ×1
deprecated ×1
if-statement ×1
in-operator ×1
indexer ×1
indexing ×1
mysql ×1
operators ×1
php ×1
sql-like ×1