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 一样。 numi 都包含一个数字。他们彼此独立。

Does this have anything two do with assigning primitive values versus objects?

是的。对象将是(可变的!)你可以指向的东西。但是当分配给一个变量时——不管这个值是一个对象还是一个原始值——然后只有那个变量改变了。