0
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ました(変数が不要になったときに誤って変数を使用するのを防ぐため)が、その効果はないようです。この制限を回避する方法はありますか?

4

3 に答える 3

5

1 つの方法は、その範囲を制限することです。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
}
于 2013-06-26T04:02:34.343 に答える
2

その場合、値をundefinedlikeに設定できますtheVariable = undefined

削除機能が期待どおりに機能しない

ドキュメントから

delete 演算子は、オブジェクトからプロパティを削除します。

この場合theVariable、オブジェクトのプロパティではなく、現在の関数スコープ内の変数です。

于 2013-06-26T04:01:03.943 に答える
0

プリミティブ型を削除することはできません。オブジェクトのみを削除します。特定の時点以降に変数を使用したくない場合は、使用しないようにコードを見直してください。残念ながら、JS には、変数の可視性を制限するブロック スコープがありません。これは手動で確認する必要があります。

または、値を undefined に設定します。

于 2013-06-26T04:05:47.577 に答える