Javascript 为什么我在for循环中得到奇怪的增量?

Javascript 为什么我在for循环中得到奇怪的增量?,javascript,for-loop,increment,Javascript,For Loop,Increment,我一直在测试检查字符串中单个字符的数值的方法。我设置了一个遍历它们的for循环,但是当我将其记录到控制台时,我得到了一个奇怪的响应: isNumeric: function(n){ for(var i = 0; i < n.length; i++){ console.log("Looping " + i+1); } }, 这是怎么回事?我不认为我是在这里凝聚弦,但出于某种原因它认为我是?我声明I是一个整数var I=0当你把它增加1时,它在做什么 我认为它

我一直在测试检查字符串中单个字符的数值的方法。我设置了一个遍历它们的for循环,但是当我将其记录到控制台时,我得到了一个奇怪的响应:

isNumeric: function(n){
    for(var i = 0; i < n.length; i++){
        console.log("Looping " + i+1);
    }
},
这是怎么回事?我不认为我是在这里凝聚弦,但出于某种原因它认为我是?我声明I是一个整数
var I=0当你把它增加1时,它在做什么

我认为它必须做的另一件事是记录附加到
循环0
循环1
的其他内容,但我认为情况并非如此

如果有人能帮忙的话,这真的让我很烦,我似乎无法解决它

提前谢谢。

你的意思是
console.log(“循环”+(i+1))
“1”被附加为字符串。

您的意思是
console.log(“循环”+(i+1))
“1”被附加为字符串。

console.log(“循环”+i+1)从左到右被解析,如
(“循环”+i)+1
。在正确的位置添加括号,应该可以:

console.log("Looping " + (i+1));
console.log(“循环”+i+1)从左到右被解析,如
(“循环”+i)+1
。在正确的位置添加括号,应该可以:

console.log("Looping " + (i+1));

问题在于执行实际日志记录的行:

console.log("Looping " + i+1);
第一个
“循环”+i
发生

因为
“循环”
是一个字符串,
i
被转换为字符串并附加到
“循环”

结果是:

“循环0”

然后,以相同的方式添加
1

“循环01”

如果不想发生这种情况,请使用括号,如下所示:

isNumeric: function(n){
    for(var i = 0; i < n.length; i++){
        console.log("Looping " + (i+1));
    }
},
isNumeric:函数(n){
对于(变量i=0;i
问题在于您实际记录日志的行:

console.log("Looping " + i+1);
第一个
“循环”+i
发生

因为
“循环”
是一个字符串,
i
被转换为字符串并附加到
“循环”

结果是:

“循环0”

然后,以相同的方式添加
1

“循环01”

如果不想发生这种情况,请使用括号,如下所示:

isNumeric: function(n){
    for(var i = 0; i < n.length; i++){
        console.log("Looping " + (i+1));
    }
},
isNumeric:函数(n){
对于(变量i=0;i
您正在连接字符串,而不是添加数字。首先,将
i
的值转换为字符串并连接到
循环
,从而产生
循环0
。然后,数字
1
被转换为一个字符串并连接起来,从而产生您所看到的:
循环01

要得到想要的结果,只需将
i+1
放在括号中即可

console.log("Looping " + (i+1));

您正在连接字符串,而不是添加数字。首先,将
i
的值转换为字符串并连接到
循环
,从而产生
循环0
。然后,数字
1
被转换为一个字符串并连接起来,从而产生您所看到的:
循环01

要得到想要的结果,只需将
i+1
放在括号中即可

console.log("Looping " + (i+1));
+
是。表达式的计算结果为

('Looping ' + i) + 1
现在更清楚为什么要执行字符串连接了吗?如果
+
操作的两个操作数中的任何一个是字符串,则执行字符串串联
'Looping'
是一个字符串,因此
'Looping'+i
产生一个字符串

要更改优先级或关联性,必须使用分组“运算符”(
(…)
)。

+
是。表达式的计算结果为

('Looping ' + i) + 1
现在更清楚为什么要执行字符串连接了吗?如果
+
操作的两个操作数中的任何一个是字符串,则执行字符串串联
'Looping'
是一个字符串,因此
'Looping'+i
产生一个字符串


若要更改优先级或关联性,必须使用分组“运算符”(
(…)
)。

添加括号是正确的,整个代码是:

isNumeric: function(n){
    for(var i = 0; i < n.length; i++){
        console.log("Looping " + (i+1));
    }
},
isNumeric:函数(n){
对于(变量i=0;i
他们添加括号是正确的,整个代码是:

isNumeric: function(n){
    for(var i = 0; i < n.length; i++){
        console.log("Looping " + (i+1));
    }
},
isNumeric:函数(n){
对于(变量i=0;i
将您的结果与此进行比较:

n=[1,2,3,4]

function isnum(n){
    for(var i = 0; i < n.length; i++){
        console.log("Looping " + i+1);
        console.log("Looping " + (i+1));
    }
}

isnum(n);

在语句
“Looping”+i+1
中,首先发生的是
“Looping”+i
,我被转换为字符串值,以便与“Looping”串联。
1
也被强制转换为字符串值,用于缩聚。通过在
i+1
周围放置paren,我们可以强制
(i+1)
在连接之前首先作为加法发生,因此输出是您期望的结果。

将您的结果与此进行比较:

n=[1,2,3,4]

function isnum(n){
    for(var i = 0; i < n.length; i++){
        console.log("Looping " + i+1);
        console.log("Looping " + (i+1));
    }
}

isnum(n);

在语句
“Looping”+i+1
中,首先发生的是
“Looping”+i
,我被转换为字符串值,以便与“Looping”串联。
1
也被强制转换为字符串值,用于缩聚。通过在
i+1
周围放置paren,我们可以强制
(i+1)
在被连接之前首先作为加法发生,因此输出是您所期望的。

啊,是的,这是有意义的。谢谢。啊,是的,这很有道理。非常感谢。