NodeJS 在for循环中未添加和打印数字

rvpgvaaj  于 2022-12-12  发布在  Node.js
关注(0)|答案(4)|浏览(160)

我测试一些代码,我需要一个逻辑为我的程序,但我在一个单独的arquive测试,我得到了以下问题:

let numero = 0;
const string = `aaa: ${numero}`

for(let i=0; i<3;i++) {
  console.log(string)
  numero += 1
}

console.log(numero)

但结果是:

aaa: 1
aaa: 1
aaa: 1
4
  • 为什么循环是加法,但在字符串中继续用值1?

有人可以解释我的错误是什么?javascript有时真的很奇怪xD

wecizke3

wecizke31#

在for之后写入串= aaa: ${numero}(令i=0; i〈3;i++)
它这样做的原因是因为numero在for循环中发生了变化,但字符串是在for循环之外声明的,因此是常量。

3wabscal

3wabscal2#

这个行为的原因- scope。当你在循环中使用console.log时,你会从全局范围得到numero = 0。
只需使用以下代码:

let numero = 0;
const string = 'aaa: ';

for(let i=0; i<3;i++) {
  console.log(string + numero);
  numero += 1
}

console.log(numero)
pb3s4cty

pb3s4cty3#

原因有二:
具体到您的情况:您在循环 * 之外赋值,这意味着string只赋值一次,因此它永远不会改变。
此外,string是一个常量,从技术上讲不应该改变(也有例外,例如当常量是一个对象或数组时)。如果你试图改变它(在循环中),你会得到一个错误。不要使用const,而是使用let,因为你想改变它。

let numero = 0;
let string = `aaa: ${numero}`

for(let i=0; i<3;i++) {
  console.log(string)
  numero += 1
  string += 1
}

console.log(numero)
ki1q1bka

ki1q1bka4#

问题是当你设置string变量时,它使用的是一个字符串文字,这个字符串文字只使用你创建它时的值x1m1 n1. -. 0。它不会动态地更新自己。
你有两个选择
1.将stringconst更改为let,以便可以更改其值,并在for循环中更新string变量的值,如下所示:

let numero = 0;
let string = `aaa: ${numero}`;

for (let i = 0; i < 3; i++) {
    string = `aaa: ${numero}`;
    console.log(string);
    numero += 1;
}

console.log(numero)

1.创建一个函数,每次在for循环中调用它时,它都会返回更新的字符串,如下所示:

let numero = 0;

function updateString() {
    return `aaa: ${numero}`;
}

for (let i = 0; i < 3; i++) {
    console.log(updateString());
    numero += 1;
}

console.log(numero);

相关问题