为什么我必须用空值声明javascript变量?

时间:2017-06-09 01:41:27

标签: javascript

为什么我必须声明var msg = ' ';而不只是var msg;以及为什么msg += 'Round ' + roundNumber + ':';'而不仅仅是msg = 'Round ' + roundNumber + ':'; ....为什么我应该在等于之前添加+符号?

var score = [24, 32, 17];
    var arrayLength = score.length;
    var roundNumber = 0;
    var i;
    var msg = '';

    for (i = 0; i < arrayLength; i++) {
      roundNumber = (i + 1);
      msg += 'Round ' + roundNumber + ':'; 
      msg += score[i] + '</br>'
    }

    document.getElementById('answer').innerHTML = msg;

输出上面的代码:

Test 1:24
Test 2:32
Test 3:17
仅在声明msg时输出代码,而不是给出空值并在没有加号(+)的情况下分配msg:

Test 3:17

1 个答案:

答案 0 :(得分:0)

你混淆了许多Javascript概念。

首先,必须声明Javascript变量,但不必初始化。要声明Javascript变量,请使用var关键字。例如,var msg;是有效的Javascript代码。除了声明变量之外,您还可以选择使用=符号对其进行初始化。因此,例如,var msg = '';声明msg变量并将其初始化为空字符串。对您而言,重要的是,如果您不初始化Javascript变量,则会将其设置为名为undefined的特殊变量类型。

你困惑的第二个Javascript概念是赋值和计算。在Javascript中,您使用=符号为变量赋值。因此,例如x = 1;将x变量的值设置为1. +=运算符是速记运算符。因此,x += y;x = x + y;完全相同。关键的区别在于=运算符会覆盖变量的现有值,而+=会使用现有值来计算新值。

因此,在您的代码的特定情况下,您在+=变量上使用了msg运算符。如上所述,+=运算符对变量的现有值执行计算。所以,这就是你在声明它时必须初始化变量的原因 - 否则你会在+=变量上执行undefined - 在你的情况下,它不会执行字符串连接你期待的。

关于何时应该使用内容的具体实例取决于代码的目标是什么。