将变量指定为函数中的标记

时间:2015-04-20 18:08:43

标签: javascript

尝试使用变量(var checkTrueMrk)作为标记/状态来确定if条件。

如果“checkTrueMrk”变量为true,则在按钮上单击,否则if条件不会继续,否则checkTrueMrk将设置为true。但是,重复点击后,checkTrueMrk始终为false。

是否可以这种方式使用变量。我知道它可能是一个对象文字或来自构造函数的对象,我可以创建一个属性,甚至只是函数外部的全局变量集。

编辑**但是为什么在将变量设置为true后,变量在后续点击时默认为“false”?

我的代码:

<button onclick="myFunction()">click</button>

<script>
function myFunction() {
    console.log(checkTrueMrk); //undefinied
    console.log(typeof checkTrueMrk); //undefined

    if (typeof checkTrueMrk == 'undefined' || !checkTrueMrk) {
        var checkTrueMrk = false;
    }

    console.log(checkTrueMrk); //displays false and type of boolean as expected

    if(!checkTrueMrk){
        console.log("Im not true");
        checkTrueMrk = true;
        console.log("I am now set to " + checkTrueMrk 
            + "and I am type of" 
            + typeof checkTrueMrk);
    }
}

2 个答案:

答案 0 :(得分:0)

您没有在函数外部声明变量,因此它将首次未定义。将var checkTrueMrk = flase;添加到代码顶部。

答案 1 :(得分:0)

您已经提到过,您需要使用变量作为标志,但不要让它变为全局变量。如果我理解正确,下面使用自动执行匿名函数的方式可能只适合你。

<!DOCTYPE html>    
<html>    
<body>    
<button onclick="myFunction()">Click me</button>    
<script>    
var myFunction = (function() { 
    alert("came in");     
    var checkTrueMrk = false;   
    return function(){       
     if(!checkTrueMrk){         
       alert("I will be called once");       
       checkTrueMrk = true;      
     }   
    };    
})();  
</script>    
</body>    
</html>

开启

  

但是为什么变量默认为&#39; false&#39;在将后续点击设置为true后?

这只是因为在您的实现中,变量在函数范围内。函数调用完成后,内部声明的变量的存在就消失了。