For 循环和赋值运算符中赋值变量的不同值,Javascript
Different values for assigned variable in a For Loop and assignment operator, Javascript
我是编码新手,JavaScript 但找不到 post 准确回答这个问题。
下面的 JS 代码是计算给定数字的阶乘,我不明白为什么它在 'num' 赋值方面有效。
num 用作参数,赋值给新变量"i",也用于赋值运算符 num = num * i 或 num *= i 简称。结果 num 在 for 循环和赋值运算符中发生变化,但它们作为两个独立变量发生变化。为什么?他们指的不是同一个东西吗,num?换句话说,在将 num *= i 评估为 6 之后,for 循环中的下一步为什么不变成 i = 6 - 1 ?我觉得我错过了一些明显的东西......
function factorialize(num) {
if (num == 0 || num == 1) {
return 1;
}
for (var i = num -1; i >= 1; --i){
console.log(i);
console.log(num);
num = num * i;
console.log(i);
console.log(num);
}
return num;
}
factorialize(3);
控制台输出:
2个
3
2
6
1
6
1
6
这与分配原始值与对象、语句顺序或循环范围有什么关系吗?
Aren't they pointing to the same thing, num?
没有。 num
不是一个可以指向的东西,它是一个变量——就像 i
一样。 num
和 i
都包含一个数字。他们彼此独立。
Does this have anything two do with assigning primitive values versus objects?
是的。对象将是(可变的!)你可以指向的东西。但是当分配给一个变量时——不管这个值是一个对象还是一个原始值——然后只有那个变量改变了。
我是编码新手,JavaScript 但找不到 post 准确回答这个问题。
下面的 JS 代码是计算给定数字的阶乘,我不明白为什么它在 'num' 赋值方面有效。
num 用作参数,赋值给新变量"i",也用于赋值运算符 num = num * i 或 num *= i 简称。结果 num 在 for 循环和赋值运算符中发生变化,但它们作为两个独立变量发生变化。为什么?他们指的不是同一个东西吗,num?换句话说,在将 num *= i 评估为 6 之后,for 循环中的下一步为什么不变成 i = 6 - 1 ?我觉得我错过了一些明显的东西......
function factorialize(num) {
if (num == 0 || num == 1) {
return 1;
}
for (var i = num -1; i >= 1; --i){
console.log(i);
console.log(num);
num = num * i;
console.log(i);
console.log(num);
}
return num;
}
factorialize(3);
控制台输出: 2个 3
2 6
1 6
1 6
这与分配原始值与对象、语句顺序或循环范围有什么关系吗?
Aren't they pointing to the same thing, num?
没有。 num
不是一个可以指向的东西,它是一个变量——就像 i
一样。 num
和 i
都包含一个数字。他们彼此独立。
Does this have anything two do with assigning primitive values versus objects?
是的。对象将是(可变的!)你可以指向的东西。但是当分配给一个变量时——不管这个值是一个对象还是一个原始值——然后只有那个变量改变了。