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
是块作用域。