【问题标题】:Declare JavaScript variable only with ' ' marks仅使用 ' ' 标记声明 JavaScript 变量
【发布时间】:2017-05-19 21:43:58
【问题描述】:

我看到一位大师这样做:

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;
}

那么,为什么这里不一样呢?请问有人能回答吗?

谢谢!


第二次更新!

再次感谢!

我决定把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 = '&lt;div&gt;just a div&lt;/div&gt;'; 之间没有区别,但是这样做是有理由的。

标签: javascript variables declare


【解决方案1】:

当你这样做时:

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 example;然后他继续说:example += 2;在这种情况下,哪一个是不同的呢?谢谢!
  • 我再次更新了我的问题...如果您能再次帮助我,我们将不胜感激。感谢您的宝贵时间!
  • 嗨@Frank 非常感谢!我有一个新问题,我很抱歉,正如你所看到的,我正在学习,我真的很想把它做好 :)... 当你说:“JavaScript 必须尝试做一些明智的事情” 究竟是什么意思那? JavaScript 中什么是明智的?你能向我解释一下,或者告诉我在哪里可以获得更多信息吗?非常感谢!
  • JS 是一种动态语言 - 一个变量现在可以保存一种类型,例如 string,以后可以保存另一种类型,例如 number。当您将不同的类型添加在一起时,JS 不会像静态类型语言那样给出错误,但它必须尝试将一种类型转换为另一种类型,这样添加才有意义(但结果可能不是您所期望的,如我的答案)。您还可以比较不同的类型,例如 if ("1" == 1),它返回 true,但是像 if ("1" === 1) 这样的严格比较返回 false。阅读有关动态类型、比较运算符、类型转换和 JS 的更多信息。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      var example = '';
      

      在这里,您正在为变量初始化一个空字符串,因此将一个字符串附加到另一个字符串将给出所需的字符串连接输出。

      输出:

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

      【讨论】:

        【解决方案5】:

        是的,有一个区别,第一个来自 master 的片段创建了一个变量示例并给它一个默认值,第二个语句将值与“只是一个 div”连接起来 .您的代码有一个错误,因为它正在向一个不存在的值添加一个值,因为变量示例没有默认值。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-06
          • 1970-01-01
          • 2011-12-12
          • 2018-04-19
          相关资源
          最近更新 更多