为什么我必须声明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
答案 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
- 在你的情况下,它不会执行字符串连接你期待的。
关于何时应该使用内容的具体实例取决于代码的目标是什么。