2

私はおそらくつまらないことを知っていますが...私は次のコードを持っています:

var book;
var i=0;

i = 300;    
book = new CBook();
book.Title = "blahblah";
book.Contents = "lalalala";


function CBook() {
    this.Title = "";
    this.Contents = "";
}

今私の質問は:

あったほうがいいでしょうか

var book = {};

それ以外の

var book;

最初のバージョンでは typeof(book) は割り当ての前に undefined を返します book = new CBook();

前もって感謝します

4

2 に答える 2

12

あったほうがいいでしょうか

var book = {};

いいえ、いくつかの理由があります。

  1. 後で捨てたときに捨てるためだけにオブジェクトを作成することになりますbook = new Book(...)。(もちろん、本当に優れたJavaScript エンジンはそれを認識して最適化するかもしれませんが、それでも...)

  2. ツールを使用する場合は、ツールを (適切に) 初期化する前にlint、ツールを使用しようとしているという警告を積極的に防ぎます。book

  3. なんらかの理由で、本をまだ割り当てているかどうかを確認する必要があるロジックがコードに含まれている場合、それを行う機能が失われます。変数をデフォルトundefined値のままにしておくことで、そのチェックを行うことができますif (!book) { /* Not assigned yet */ }。(もちろん、ナイーブな lint ツールもそれについて警告するかもしれません。)

= 0#2もインに行きvar i = 0;ます。

bookただし、宣言時に初期化することを強くnull希望する場合は、おそらくより良い選択になるでしょう。

于 2013-07-13T18:10:06.863 に答える
2

変数は、最初に使用する直前に宣言する必要があります。だから、もし私があなたなら、私は次のように変更します:

var book = new CBook();

また、パラメーターを CBook に渡し、それをコンストラクターとして使用します。

var book = new CBook("blahblah", "lalalala");

function CBook(title, contents) {
   this.title = title;
   this.contents = contents;
}
于 2013-07-13T18:05:01.433 に答える