仅使用 ' ' 标记声明 JavaScript 变量

Declare JavaScript variable only with ' ' marks

我看到一位大师这样做:

var example = '';

后来他继续说:

example += '<div>just a div</div>';

我想知道这样做是否有任何不同:

var example;

example += '<div>just a div</div>';

我真的不知道通过第二种方法我做错了,如果第一个例子我必须像所示那样编码。


已更新!

非常感谢您的回答,好的我知道了我需要定义我的变量才能让它工作,但是另一个问题来了...这位大师也在这样做:

var guess;

然后他做了:

guess += myfunction( upper );

myfunction 的声明如下:

function myFunction( upper ){
    return Math.floor( Math.random() * upper ) + 1;
}

那么,为什么这里不一样呢?请问有人可以回答这个问题吗?

谢谢!


第二次更新!

再次感谢!

我决定post把JS大师做的全部代码,到这里我还不明白,希望你能解开我的疑惑。

var randomNumber = myFunction( 10 );
var guess;
var attempts = 0;
var answer = false;

function myFunction( upper ){
    return Math.floor( Math.random() * upper ) + 1;
}

do{
    guess = prompt( "I created a number from 1 till 10, can you guess it?");
    attempts += 1;
    if( parseInt( guess ) === randomNumber ){
        answer = true;
    }
}while( ! answer )
    document.write( "Took you " + attempts + " attempts to guess the number " + randomNumber);

请看:

var guess;

以及声明的时间有多晚,所以为什么这里可以完美地工作,但在我的第一个示例中,我必须在声明我的变量时放置 ''?

希望我的问题对你来说足够清楚了!

感谢您的耐心等待!

当你这样做时:

var example;

example += '<div>just a div</div>';

你最终得到:

`"undefined<div>just a div</div>"`

这是因为当你不初始化一个变量时,它是undefined,当你尝试将它添加到另一个字符串时,它可以转换为一个合理的字符串"undefined"

当你这样做时:

var guess;

guess += myfunction( upper );

function myFunction( upper ){
    return Math.floor( Math.random() * upper ) + 1;
}

您正在向 undefined 添加 number。这导致 NaN(不是数字),因为 undefined 无法转换为合理的 number

下次您可以通过打开浏览器的开发人员工具和 运行 控制台中的代码自行检查。

编辑:

当你这样做时:

var guess;

guess = prompt( "I created a number from 1 till 10, can you guess it?");

没有问题,因为您只是将 string 分配给 guess 变量。在前面的示例中,您向变量添加了一些东西,这意味着如果它们是不同的类型,那么 JavaScript 必须尝试做一些合理的事情。

var myvar
myvar += 'asdf'
console.log(myvar) // prints undefinedasdf

var othervar = ''
othervar += 'sdfasdf'
console.log(othervar) // prints sdfasdf

如果您不初始化变量,它的值为未定义。

在你的最后一个例子中,你实际上是在说 example = undefined + '<div>just a div</div>' 并且 undefined 将被转换为一个字符串并以这种方式输出。可能不是你想要的。

一般来说,在使用变量之前初始化变量是个好主意,这就是为什么 var example = '' 在这种情况下更可取。

如果你不初始化变量那么它将是undefined
附加到未定义的对象没有帮助。

var example = '';

此处您将一个空字符串初始化为变量,因此将一个字符串附加到另一个字符串将提供所需的字符串连接输出。

输出:

"undefined<div>just a div</div>"
"<div>just a div</div>"

是的,主程序的第一个片段创建了一个变量示例并为其提供了默认值,第二个语句将值与 'just a div' 连接起来 .您的代码有一个错误,因为它将一个值添加到一个不存在的值,因为变量示例没有默认值。