Javascript 为什么我在for循环中得到奇怪的增量?
我一直在测试检查字符串中单个字符的数值的方法。我设置了一个遍历它们的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时,它在做什么 我认为它
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)
在被连接之前首先作为加法发生,因此输出是您所期望的。啊,是的,这是有意义的。谢谢。啊,是的,这很有道理。非常感谢。