Javascript函数变量总是未定义的

javascript function variable always undefined

本文关键字:未定义 函数 变量 Javascript      更新时间:2023-09-26

我正在尝试编写一个简单的函数,该函数使用指定的类检查复选框的负载。我想使用一个变量来确定检查所有div是否已被单击,但变量始终未定义:

var CCT;
$("#filterTitleTopic").click(function () {  
    console.log(CCT);
    if (CCT == undefined || CCT == null || CCT == 2) {              
         $('input.topic').prop('checked', false);
         var CTT = 1;
         console.log("unchecking boxes...");
    }
    else if (CTT == 1) {                
        $('input.topic').prop('checked', true);
        var CTT = 2;
        console.log("checking boxes...");
    }
});

console.log总是返回undefinedunchecking boxes...

只赋值变量,不要用var重新赋值。

如果执行var CTT = 2,则会在函数作用域中初始化一个新变量,该变量优先于全局作用域中定义的变量。因为这是允许的,有时甚至希望没有错误。但是,由于您在函数作用域中初始化了变量,因此您不再访问第1行中定义的变量。

你还把CCTCTT弄混了。

var CTT;
$("#filterTitleTopic").click(function () {  
    console.log(CTT);
    if (CTT == undefined || CTT == null || CTT == 2) {              
         $('input.topic').prop('checked', false);
         CTT = 1;
         console.log("unchecking boxes...");
    }
    else if (CTT == 1) {                
        $('input.topic').prop('checked', true);
        CTT = 2;
        console.log("checking boxes...");
    }
});

我想这里有两个问题:

    一个简单的拼写错误(CCT vs CTT)。
  • 如果你在一个函数中使用var foo,你会得到一个全新的本地函数,你不再有直接访问任何foo函数,你可能已经在外部范围中定义。访问全局变量只是使用它们,而不是重新定义它们。

当你想定义一个变量时,你只使用var,当你想为现有的变量设置一个值时,你不添加它。

只需将您的代码替换为:

var CCT;
$("#filterTitleTopic").click(function () {  
    console.log(CCT);
    if (CCT == undefined || CCT == null || CCT == 2) {              
         $('input.topic').prop('checked', false);
         CCT = 1;
         console.log("unchecking boxes...");
    }
    else if (CCT == 1) {                
        $('input.topic').prop('checked', true);
        CCT = 2;
        console.log("checking boxes...");
    }
});