22

これが私のjavascriptコードです。変数コードを削除して、値が未定義になるようにします。

var code = $(this).data('code');
var userelm = $(this);

ここで私はチェックをしています:

if($('.code-1').val()!='' && $('.code-2').val()!='' && $('.code-3').val()!=''){
    if(code==$('.code-1').val()+$('.code-2').val()+$('.code-3').val()){
        $('.overlay').remove();
        $('.code-box').remove();
        $('.close-lock').remove();
        userelm.ajaxloader(); //own function
        userelm.off();
        delete code;
        console.log(code);
        delete userelm;
    }
}

このプログラムがcode変数を削除せず、値が定義されていないのはなぜですか?

4

10 に答える 10

25

Deleteは変数を削除しません。

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

あなたが試すことができます:

code = null;
于 2013-06-06T13:16:49.707 に答える
25

JavaScript で変数を削除します。

概要:

JavaScript で変数を削除できないのは、JavaScript ではできないためです。varトリックの袋からウサギを引き出さない限り、コマンドによって作成されたものを削除することはできません。

delete コマンドは、var で作成されていないオブジェクトのプロパティのみを対象としています。

JavaScript では、次の条件下で var で作成された変数を削除できます。

  1. JavaScript インタープリターまたはコマンドラインを使用しています。

  2. eval を使用していて、そこに var を作成して削除します。

端末でのデモ。 delete booordelete(boo)コマンドを使用します。jsコマンド ライン ターミナルを使用 したデモでは、変数を削除できます。

el@defiant ~ $ js

js> typeof boo
"undefined"

js> boo
typein:2: ReferenceError: boo is not defined

js> boo=5
5

js> typeof boo
"number"

js> delete(boo)
true

js> typeof boo
"undefined"

js> boo
typein:7: ReferenceError: boo is not defined

JavaScript で変数を未定義に設定しなければならない場合、1 つのオプションがあります。

JavaScriptページのデモ:これを入れてくださいmyjs.html

<html>
<body>
    <script type="text/JavaScript">
        document.write("aliens: " + aliens + "<br>");
        document.write("typeof aliens: " + (typeof aliens) + "<br>");
        var aliens = "scramble the nimitz";
        document.write("found some aliens: " + (typeof aliens) + "<br>");
        document.write("not sayings its aliens but... " + aliens + "<br>");
        aliens = undefined;
        document.write("aliens set to undefined<br>");
        document.write("typeof aliens: " + (typeof aliens) + "<br>");
        document.write("you sure they are gone? " + aliens);
    </script>
</body>
</html>

ブラウザーで myjs.html を開くと、次のように出力されます。

aliens: undefined
typeof aliens: undefined
found some aliens: string
not sayings its aliens but... scramble the nimitz
aliens set to undefined
typeof aliens: undefined
you sure they are gone? undefined

警告変数を に設定するとundefined、変数が別の変数に割り当てられます。誰かが を実行して井戸に毒を入れた場合undefined = 'gotcha!'、変数を未定義に設定すると、「わかった!」になります。

変数に値がないかどうかを確認するにはどうすればよいですか?

次のように undefined の代わりに null を使用します。

document.write("skittles: " + skittles + "<br>");
document.write("typeof skittles: " + (typeof skittles) + "<br>");
var skittles = 5;
document.write("skittles: " + skittles + "<br>");
document.write("typeof skittles:" + typeof skittles + "<br>");
skittles = null;
document.write("skittles: " + skittles + "<br>");
document.write("typeof skittles: " + typeof skittles);

どちらが印刷されますか:

skittles: undefined
typeof skittles: undefined
skittles: 5
typeof skittles:number
skittles: null
typeof skittles: object 

strict を使用していない場合は、次のように作成された変数を削除できます。

<script type="text/JavaScript">
   //use strict
   a = 5;
   document.writeln(typeof a);        //prints number
   delete a;
   document.writeln(typeof a);        //prints undefined
</script>

ただし、コメントを外すuse strictと、JavaScript は実行されません。

于 2014-01-08T19:00:21.120 に答える
8

これをグローバルスコープで試してください:

x = 2;
delete window.x;
于 2014-01-23T02:08:57.673 に答える
5

delete は変数名には影響しません

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete

x = 42;         // creates the property x on the global object
var y = 43;     // declares a new variable, y
myobj = {
  h: 4,
  k: 5
};

delete x;       // returns true  (x is a property of the global object and can be deleted)
delete y;       // returns false (delete doesn't affect variable names)
delete Math.PI; // returns false (delete doesn't affect certain predefined properties)
delete myobj.h; // returns true  (user-defined properties can be deleted)

delete myobj;   // returns true  (myobj is a property of the global object, not a variable, so it can be deleted)
于 2013-06-06T13:18:59.993 に答える
1

その場で作成された変数は、参照がなくなると自動的に削除されます。

(function(){
  var a = 1;
})(); //a available until here
于 2014-05-05T14:15:42.233 に答える
0

関数で宣言した場合、 var を削除する必要はありません。関数が終了すると、内部の var は存在しなくなります。変数をグローバルに宣言する必要はありません。

于 2016-04-08T14:16:32.353 に答える
0

で成功しませんでしたmyvariable = null

しかし、私は成功しましたmyvariable = function(){};

于 2016-05-25T18:44:15.707 に答える
0

変数を定義するためにvarを書くからです。var を使用すると削除できません。あなたはこれを書く必要があります

userelm = null;

またはvarを書かないでください。この質問を参照してください: Javascript 変数の設定を解除または削除するには?

于 2016-03-27T15:07:54.430 に答える