7

node.jsの変数宣言でコンマを省略するとリスクが発生しますか?たとえば、次のようないくつかのグローバル変数を宣言すると、問題なく機能します。

express = require('express')
jade = require('jade')

そして、コンマを書かないのが安全であるなら、私はコンマを書きたくありません(私は「コードの美しさ/明快さ」の引数を気にしません)。

重要:私はセミコロンではなくコンマを意味します(セミコロンについて3つの答えを得ました)。node.jsからセミコロンを削除することも、まったく問題ありません。npmの作成者もそれを行います:http://blog.izs.me/post/3393190720/how-this-works

疑わしい場合は、最新のjavascript仕様を確認してください:http ://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf

あなたも書く必要がないことに注意してください

var

グローバル変数の場合。

ただし、この質問は「カンマ」に関するものなので、質問を編集するときに誤ってカンマをセミコロンに置き換えないでください(以前に行った)。

4

4 に答える 4

18

JavaScriptでは、セミコロン ;を記述しないと、目に見えない形で挿入されます。そして、あなたは彼らがどこに行くのかいつも好きではないかもしれません。

すべてのステートメントをセミコロンで終了する必要はありません。しかし、ほとんどの人はそれを良い考えだと考えています。

詳細については、このグーグル検索の結果をよく読んでください。私たちは長い間このトピックについて議論してきました。


これは、これが一見したところよりも複雑である理由の例です。すべてのステートメントをセミコロンで終了する必要は技術的にはありませんが、必要な場合や、問題が発生する場合がいくつかあります。ほとんどのコードベースでは、それらを完全に省略することはできません。

foo.def = bar
(function() {
  // some self executing closure
})()

簡単そうですね。通訳はそれを見て、これを行います。

foo.def = bar(function() {
  // some self executing closure
})()

これはおそらくあなたが期待していたものではありません。それを修正する方法は、セミコロンを使用することです。

foo.def = bar;
(function() {
  // some self executing closure
})()

このようなケースはたくさんあります。あなたはそれらすべてを学び、それらの場合にのみそれらを使用することができます、そしてあなたが必然的にあなたがあなたの髪を何時間も引き裂くほど奇妙で奇妙なことをしているあなたのコードをデバッグしようとするのを忘れるとき...関数?!?関数ではないはずです!」wtfvar

または、一貫性のあるセミコロンを使用することもできます。

于 2013-02-19T23:01:07.613 に答える
0

Node.jsはV8エンジンを使用してコードを読み取るため、GoogleChromeとほぼ同じように動作します。とはいえ、セミコロンを使用しないことは一般的に悪い習慣です。通訳者はあなたのコードを理解しようとし、(あなたのせいで)時々間違えられるかもしれません。

完全な説明については、これを確認してください。JavaScriptのすべてのステートメントの後にセミコロンを使用することをお勧めしますか?

于 2013-02-19T23:01:53.780 に答える
0

要するに、いいえ。コードの縮小化などを行うときに、コンパイラが 2 つのステートメントを 1 つと見なしたときに、遭遇する可能性が高い問題が発生します。とにかく、コンマ/セミコロンを使用しないことを選択した場合は、絶対にお勧めしませんが、問題ありません。

于 2013-02-19T22:53:20.070 に答える