如何为函数内的变量赋值并仍然能够全局访问它

问题描述 投票:0回答:1

我有以下代码

let chosenRating = 0;
for(button in ratingButtons){
    ratingButtons[button].onclick = (e) => {
        chosenRating = e.target.innerHTML;
        
        ratingButtons.forEach(btn => {
            btn.classList.remove('selected');
        })
        e.target.classList.add('selected');
    }
}

我希望能够全局访问 selectedRating 变量,但它只是说它是 0。我尝试只声明它而不分配它,但它说它是未定义的。当我在函数内部进行控制台登录时,在将其分配给 e.target.innerHTML 之后,我得到了我想要的值。但在函数之外,我没有得到相同的输出。

我认为,既然我在全局范围内声明了该变量,即使我当时没有给它分配任何内容,我也可以全局访问该变量。如何解决此问题,以便将我单击的最后一个按钮的 innerHTML 存储为 selectedRating 变量的值?

javascript scope
1个回答
0
投票

使用

var
代替
let
。 let 是一个范围变量,所以它不能改变。

var chosenRating = 0;
© www.soinside.com 2019 - 2024. All rights reserved.