Javascript 变量的不同值取决于其位置

Javascript 变量的不同值取决于其位置,javascript,algorithm,Javascript,Algorithm,我知道变量不是块作用域,只是函数作用域,所以我想知道为什么reversed的变量值会发生变化,无论我将其放在while循环内部还是外部 当反向时放置在while循环内 var isPalindrome = function(x) { if (x < 0) { return false; } let temp = x; while (temp > 0) { var reversed = 0; reversed = (reversed * 10

我知道变量不是块作用域,只是函数作用域,所以我想知道为什么
reversed
的变量值会发生变化,无论我将其放在while循环内部还是外部

反向时
放置在while循环内

var isPalindrome = function(x) {
  if (x < 0) {
    return false;
  }
  let temp = x;
 
  while (temp > 0) {
    var reversed = 0;
    reversed = (reversed * 10) + (temp % 10);
    temp = Math.floor(temp/10);
  }
  console.log(reversed) // reversed = 1
  return reversed === x;
};

console.log(isPalindrome(121)) // false
var isPalindrome = function(x) {
  if (x < 0) {
    return false;
  }
  let temp = x;
  var reversed = 0;
  while (temp > 0) {
    reversed = (reversed * 10) + (temp % 10);
    temp = Math.floor(temp/10);
  }
  console.log(reversed) // reversed = 121
  return reversed === x;
};

console.log(isPalindrome(121)) // true

这不是一个范围问题。这是因为每次循环运行时,您都在重置循环中的
reversed
变量,这会影响函数的返回值。

var reversed=0相当于
var反转;反向=0函数中带有
var
的声明的位置无关紧要,但是值
0
赋值的位置无关紧要。“我知道变量不是块作用域,只是函数作用域”只有
var
s表现出这种行为,
const
是块作用域。