[解決済み] JavaScriptで「!--」は何をするのですか?
2022-03-14 14:42:05
質問
次のようなコードがあります。 この質問 ):
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);
}
});
});
});
};
私はそれを追いかけようとしているのですが、最後のほうでこう書かれている以外はすべて理解しているつもりです。
!--pending
. この文脈で、このコマンドは何をするのでしょうか?
編集部:さらなるコメントには感謝しますが、この質問は何度も回答されています。とにかくありがとうございました。
どのように解決するのですか?
!
は値を反転させ、逆のブール値を与えます。
!true == false
!false == true
!1 == false
!0 == true
--[value]
は、ある数値から1を引き、その数値を加工して返します。
var a = 1, b = 2;
--a == 0
--b == 1
だから
!--pending
は、保留中のものから1を引き、その真偽値の反対を返します(それが
0
).
pending = 2; !--pending == false
pending = 1; !--pending == true
pending = 0; !--pending == false
そして、そう、ProTipに従いましょう。 これは他のプログラミング言語ではよくあるイディオムかもしれませんが、ほとんどの宣言型JavaScriptプログラミングでは、これはかなり異質なものに見えます。
関連
-
要素ツリー制御によるvueTreeテーブル
-
jQueryのコピーオブジェクトの説明
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】JavaScript版sleep()とは?)
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
vue3.0プロジェクトのアーキテクチャを構築するための便利なツール
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
vue+webrtc(Tencent cloud)ライブ機能の実践を実現するために
-
[解決済み】React Nativeアプリをターミナルから実行するとエラーが発生する(iOS)
-
[解決済み】「.addEventListener is not a function」なぜこのエラーが発生するのか?
-
JavaScriptのStringに関する共通メソッド
-
モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory, scandir 'D:\.... \node_modules
-
JavaScriptのgetElementById、getElementsByTagNam、getElementsByClassNameの違いと使い方
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】Node.js fs.readdir 再帰的ディレクトリ検索