Javascript 为什么这个程序打印3而不是2?
我目前正在学习JavaScript,现在我正在讨论Javascript 为什么这个程序打印3而不是2?,javascript,Javascript,我目前正在学习JavaScript,现在我正在讨论let和var之间的区别 有人能解释为什么这个代码打印3而不是2吗?当循环一旦i变为2就应该停止执行时,i如何达到3的值 var i; function printNumTwo() { return i; } for (i = 0; i < 3; i++) { if(i === 2) { printNumTwo(); } } print(printNumTwo()); // prints 3 v
let
和var
之间的区别
有人能解释为什么这个代码打印3而不是2吗?当循环一旦i
变为2就应该停止执行时,i
如何达到3的值
var i;
function printNumTwo() {
return i;
}
for (i = 0; i < 3; i++) {
if(i === 2) {
printNumTwo();
}
}
print(printNumTwo()); // prints 3
vari;
函数printNumTwo(){
返回i;
}
对于(i=0;i<3;i++){
如果(i==2){
printNumTwo();
}
}
打印(printNumTwo());//印刷品3
因为你有这一行
for (i = 0; i < 3; i++) {
(i=0;i<3;i++)的{
i的哪个增量值,i是全局变量,当您调用
printNumTwo
i
时,由于循环增量i
值当i
为2时,您不会打印任何内容,只有在调用print
时,循环才会停止。当i
变为3时,循环才会停止
要让它打印2,您必须更改printNumTwo()
函数,如下所示:
var i;
function printNumTwo() {
print(i);
}
for (i = 0; i < 3; i++) {
if(i === 2) {
printNumTwo();
}
}
vari;
函数printNumTwo(){
印刷品(一);
}
对于(i=0;i<3;i++){
如果(i==2){
printNumTwo();
}
}
当您print(printNumTwo())
i为3时。在if语句中调用printNumTwo()
只返回i,而i没有被任何东西使用
因此,基本上for语句运行并完成i=3,然后打印方法使用i。您必须使用let关键字更改开始循环,因为var是全局变量,let是块范围变量。这就是为什么要获得不同的值 你可以试试这个
var i;
function printNumTwo() {
return i;
}
for (let j = 0; j < 3; j++) {
i = j;
if(i === 2) {
printNumTwo();
}
}
cosole.log(printNumTwo());
vari;
函数printNumTwo(){
返回i;
}
for(设j=0;j<3;j++){
i=j;
如果(i==2){
printNumTwo();
}
}
log(printNumTwo());
尝试使用break语句,如果指定的条件为真,它将“跳出”循环并在循环后继续执行代码
var i;
function printNumTwo() {
return i;
}
for (i = 0; i < 3; i++) {
if (i === 2) {
break;
printNumTwo();
}
}
document.write(printNumTwo()); // prints 2
vari;
函数printNumTwo(){
返回i;
}
对于(i=0;i<3;i++){
如果(i==2){
打破
printNumTwo();
}
}
document.write(printNumTwo());//打印2
因为i
是一个全局变量,对于循环,它已被增加到3个post。您将i增加到3,printNumTwo只返回i的值,因此它将打印3。为了澄清这一点,当i
变为2时,循环不会停止执行。当i
变为3时,循环会停止。