如何防止变量在某一点之后被使用?

时间:2013-06-26 03:58:31

标签: javascript

function exampleFunction(){
    var theVariable = "Lol!";
    var variable2 = Lol.toLowerCase();
    console.log(theVariable);
    delete theVariable; //to prevent bugs, I want to ensure that this variable is never used from this point onward.
    console.log(theVariable); //This still prints "Lol!", even though I just tried to delete the variable.
}

在JavaScript中,是否可以防止在某个点之后在函数中使用变量?我已经尝试声明一个名为theVariable的字符串,然后我尝试使用delete theVariable删除该变量,但console.log(theVariable)仍然会在该点之后打印theVariable的值。

我尝试使用delete theVariable使theVariable从此时开始无法使用(为了防止我在不再需要时意外使用该变量),但它似乎没有那种效果。有没有办法解决这个限制?

3 个答案:

答案 0 :(得分:5)

一种方法是限制其范围。由于JavaScript没有块范围,因此需要IIFE(或类似技术):

function exampleFunction(){
    var variable2;
    (function() {
        var theVariable = "Lol!";
        variable2 = Lol.toLowerCase();
        console.log(theVariable);
    })();
    // theVariable is now out of scope, and cannot be referenced
}

答案 1 :(得分:2)

在这种情况下,您可以将值设置为undefined,如theVariable = undefined

delete功能无法按预期工作

来自docs

  

删除操作符从对象中删除属性。

在这种情况下,theVariable不是对象的属性,它是当前函数范围中的变量。

答案 2 :(得分:0)

您无法删除基本类型,只能删除对象。如果您不希望在某个点之后使用变量,只需查看您的代码,以便不使用它。不幸的是,JS没有块限定来限制变量的可见性。你必须手动检查这个。

或者,将值设置为undefined。