为什么我将(myVariable+;=1)作为alrenative to(myVariable+;+;)放在javascript的(for循环)中,在这段代码中生成无限循环?

为什么我将(myVariable+;=1)作为alrenative to(myVariable+;+;)放在javascript的(for循环)中,在这段代码中生成无限循环?,javascript,for-loop,operators,Javascript,For Loop,Operators,这段代码的工作原理与我期望的一样,它将输入值作为javascript函数的参数,以在html文档中生成年份选择器(选择器中的结果年份从您在(from)输入字段中输入的年份开始,到您在(to)输入字段中输入的年份结束) 但是当我在for循环中将(years++)替换为(years++=1)时,我得到无限循环,浏览器停止工作 我也试过(years=years+1),我也得到了与上面相同的结果 我在寻找答案,但没有找到让我能理解的东西 提前谢谢 var fromInput=document.getE

这段代码的工作原理与我期望的一样,它将输入值作为javascript函数的参数,以在html文档中生成年份选择器(选择器中的结果年份从您在(from)输入字段中输入的年份开始,到您在(to)输入字段中输入的年份结束)

但是当我在for循环中将(years++)替换为(years++=1)时,我得到无限循环,浏览器停止工作

我也试过(years=years+1),我也得到了与上面相同的结果

我在寻找答案,但没有找到让我能理解的东西

提前谢谢

var fromInput=document.getElementById(“fromInput”),
toInput=document.getElementById(“toInput”),
斯塔蒂,
恩迪;
函数生成器(开始、结束){
“严格使用”;
var年;
文件。填写(“”);

对于(years=start;years,
+
运算符用于字符串连接和加法,具体取决于其操作数的数据类型。当切换到
+=
+
时,您执行的是字符串连接,而不是加法,因为
start
(和
year
)是字符串。
根据操作数的数据类型,
+
运算符用于字符串连接和加法。当切换到
+=
+
时,您执行的是字符串连接,而不是加法,因为
start
的值(和
year
)是一个字符串。
问题不在于for循环不支持
+=
或类似的东西

您正在从语句
years=start;
中的字符串初始化年份。这里的start是一个字符串,而不是输入字段返回的整数

现在,当您运行
year++
javascript类型时,会自动将其转换为整数,因为字符串不会对
++
运算符进行操作

但在另一种情况下,如
years+=1
它不会将其类型转换为整数,因此
1
被追加到字符串中,循环继续

i、 e对于前5次迭代,年值为

1
11
111
1111
11111
每个值都是字符串。 因此,在将值分配给for循环中的年份之前,只需使用
parseInt
将值强制转换为整数即可

var fromInput=document.getElementById(“fromInput”),
toInput=document.getElementById(“toInput”),
斯塔蒂,
恩迪;
函数生成器(开始、结束){
“严格使用”;
var年;
文件。填写(“”);

for(years=parseInt(start);years问题不在于for循环不支持
+=
或类似的东西

您正在从语句
years=start;
中的字符串初始化年份。这里的start是一个字符串,而不是输入字段返回的整数

现在,当您运行
year++
javascript类型时,会自动将其转换为整数,因为字符串不会对
++
运算符进行操作

但在另一种情况下,如
years+=1
它不会将其类型转换为整数,因此
1
被追加到字符串中,循环继续

i、 e对于前5次迭代,年值为

1
11
111
1111
11111
每个值都是字符串。 因此,在将值分配给for循环中的年份之前,只需使用
parseInt
将值强制转换为整数即可

var fromInput=document.getElementById(“fromInput”),
toInput=document.getElementById(“toInput”),
斯塔蒂,
恩迪;
函数生成器(开始、结束){
“严格使用”;
var年;
文件。填写(“”);

年=parseInt(开始);年非常感谢这真的有意义!非常感谢这真的有意义!非常感谢我非常感谢你的精彩解释!:)非常感谢我非常感谢你的精彩解释!:)