多くの JavaScript ライブラリのコードを読むと、多くの開発者が変数を作成するとすぐに変数を設定していることがわかります。
var i = 0,
var c = 0;
代わりに、変数を作成した後に変数を定義することを好みます。
var i,
c;
i = 0;
c = 0;
しかし、なぜこれまたはそのようになるのかについての説明があるかもしれません?
多くの JavaScript ライブラリのコードを読むと、多くの開発者が変数を作成するとすぐに変数を設定していることがわかります。
var i = 0,
var c = 0;
代わりに、変数を作成した後に変数を定義することを好みます。
var i,
c;
i = 0;
c = 0;
しかし、なぜこれまたはそのようになるのかについての説明があるかもしれません?
それは純粋にスタイルです。宣言を初期化から分離することを好む人もいれば、1 つの宣言で行うことを好む人もいます。JavaScript エンジンにとってはvar
、関数が実際に実行されるコードの最初の行の前に処理されるため、これらは実際には同一です。(他の言語との違いに注意してください。) つまり、2 つの例を文字通りまったく同じように扱います。最初に値を使用してi
andを作成し、後で関数のステップバイステップ コードの実行を開始したときにのみ実行します。 0に設定され、次に 0に設定されます (これについては、仕様のセクション10.4.3とセクション10.5で詳しく説明されています)。c
undefined
i
c
私にとっては、単純な価値観に固執する限り、それらを 1 つにまとめるのが好きです (ただし、以前は常にそれらを別々に保つことについて「純粋主義者」でした。若い頃はばかげたことをたくさんしました)。しかし、初期化では複雑なロジックを避けるようにしています。関数の半分を で始まる一連のカンマ区切りのステートメントとして書いていることに気付くことがありますがvar
、それは読みにくく、維持するのが難しくなり始めるので、その時点でそれらを引き出す傾向があります。
一方、それらを別々にしておく理由は、コメントする余地が十分にあるからです。:-)
好みの問題だと思います。私は両方を使用しました。複雑なコードでは、コーダーがわかりやすい変数名を使用している限り、2 番目の例の方が適しています。これらの変数を使用することを読者に知らせるものと考えたいので、注意してください。
もう 1 つの考慮事項はスコープです。変数を正しいスコープ (global/class/function/etc) で宣言していることを確認してください。宣言が狭すぎると、うっかりして 2 つの異なる変数を作成してしまいます (デバッグが非常に困難になる可能性があります)。それらを広範に宣言すると、プログラムの効率が低下する可能性があります。
どちらも機能しますが、変数を初期化せずに定義し、初期化の前に使用するのは悪い習慣です。
このスタイルを使用することもできます:
var a = b = 0;
定義内の変数を初期化すると、変数が設定されておらず、初期の JavaScript デフォルト値が であるために発生するエラーを防止できますundefined
。
これは、次のような条件を使用して初期値を設定するためです。
var i;
... code ...
if(b==something){
i = somevalue;
}
... code ...
a = i + b;
b が何かと等しくない場合、変数は未定義のままです。これが後の使用で問題になるのを防ぐために、変数に初期化値を与えます。
ただし、定義後に初期値を直接設定する場合は、違いはありません。他の人が言うように、コンパクトさと読みやすさとスタイルのためです。