我知道我很可能在挑剔,但是...我有以下代码:

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)在分配书= new CBook()之前返回undefined;

提前致谢

最佳答案


否,原因如下:

  • 您稍后将创建book = new Book(...)时将创建一个对象只是将其丢弃。 (当然,一个非常好的JavaScript引擎可能会意识到这一点并对其进行优化。但是仍然...)
  • 如果您使用lint工具,则会积极阻止它们警告您(正确)初始化book之前尝试使用undefined
  • 如果由于某种原因您的代码中有逻辑需要检查您是否已经分配了一本书,那么您将失去这样做的能力。通过保留变量的默认if (!book) { /* Not assigned yet */ }值,该检查可以是= 0。 (当然,天真的 Lint 工具也可能会警告您。)

  • #2同样也用于var i = 0;中的book
    但是,如果您强烈希望在声明中初始化null,那么ojit_code可能是一个更好的选择。

    关于javascript - javascript变量为空的声明或对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17632800/

    10-12 06:59
    查看更多