为什么我的对象被声明但从未读取(在函数内)?

时间:2019-04-30 02:54:48

标签: javascript jquery function constructor

我刚接触Javascript。几个月前,我才开始弄乱它,但遇到了一个似乎无法解决的错误。

我试图做到这一点,以便在单击按钮时创建一个对象(thisObject),该对象存储4个参数-路线,得分,标准杆和小鸟。

我尝试使用大括号语法创建对象,但是由于某些原因,当我将鼠标悬停在已将对象分配给var的变量上时,VSCode会给我此消息错误:'声明了thisObject但从不读'。

$(enter).click(appendScore);

    function appendScore(){
    event.preventDefault();

    if (scoreText.value==""){
        $('.errorMessage').show();

    }
    else{
        event.preventDefault();
        $('.scoresContainer').append(scoreText.value + ', ');
        scoreForm.reset();
        $('.errorMessage').hide();
        var thisObject = {course: courseSelect.value, score: scoreText.value, pars: parsText.value, birdies: birdiesText.value};
        }
    }

这导致页面无法定义“ thisObject”。我希望它创建一个具有4个参数的对象,这些参数当然包括得分,标准杆和小鸟。这是怎么回事?

1 个答案:

答案 0 :(得分:1)

因为您在 handler 函数thisObject中定义了appendScore,所以在其他任何地方都无法使用它。您必须在全局(或封闭)范围内声明它。 (还请注意,appendScore需要使用参数event才能使event.preventDefault起作用):

var thisObject;
$(enter).click(appendScore);

function appendScore(event) {
    event.preventDefault();
    //...
    thisObject = {course: courseSelect.value, score: scoreText.value, pars: parsText.value, birdies: birdiesText.value};
 }