如何删除变量?

时间:2013-06-06 13:13:24

标签: javascript

这是我的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变量,因此它的值未定义?

10 个答案:

答案 0 :(得分:23)

Delete不会删除变量。

  

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

您可以尝试:

code = null;

答案 1 :(得分:22)

在JavaScript中删除变量:

<强>要点:

您在JavaScript中删除变量时遇到问题的原因是JavaScript不会让您失望。你不能删除var命令创建的任何东西,除非我们把一只兔子拉出来。

delete命令仅适用于未使用var创建的对象属性。

JavaScript允许您在以下条件下删除使用var创建的变量:

  1. 您正在使用javascript解释器或命令行。

  2. 您正在使用eval,并在那里创建和删除var。

  3. 在终端上演示,使用delete boodelete(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中将变量设置为undefined,你有一个选择:

    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,它都会变为:“gotcha!”。

    我们应该如何检查变量是否没有值?

    使用null而不是undefined,如下所示:

    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将无法运行。

答案 2 :(得分:8)

以下也在严格模式下工作:

"use strict";

var foo = 1;
console.log(foo);
// 1

foo = (function(){}());
console.log(foo);
// undefined

答案 3 :(得分:7)

在全球范围内尝试:

x = 2;
delete window.x;

答案 4 :(得分:5)

删除不会影响变量名称

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)

答案 5 :(得分:0)

在没有更多引用的变量后,动态创建的变量将为automatically deleted

(function(){
  var a = 1;
})(); //a available until here

答案 6 :(得分:0)

因为您编写 var 来定义变量。 如果使用var则无法删除它。 你必须写这个

userelm = null;

或者不要写 var 。 请参阅此问题:How to unset or remove a Javascript variable?

答案 7 :(得分:0)

如果在函数中声明了var,则不必删除var - 当函数结束时,内部var将停止存在。您不必全局声明变量。

答案 8 :(得分:0)

myvariable = null我没有成功。

但我使用myvariable = function(){};

取得了成功

答案 9 :(得分:0)

其他答案非常简单有效

SELECT aa.Barcode, aa.ItemName, aa.Quantity AS Qty
FROM
(SELECT Barcode, ItemName, Quantity
FROM PurchaseDetails
UNION
SELECT Barcode, ItemName, Quantity
FROM BarcodePrinting) aa
ordersList= [{Barcode=8901030627330, ItemName=Lux Soft Touch, Qty=[B@72d4ef0c}, {Barcode=8901396393511, ItemName=Dettol org, Qty=[B@799a37b9}]

但我想分享它的原因,为什么删除代码; 不会工作

delete意味着仅删除对象的属性。它从未意味着(开发)删除变量。

code = null;
code = undefined;

Bounus(面向开发人员)

var obj = {
  'first' : 10;
}
//Following will print
console.log(obj.first)

delete obj.first;

//Following will print undefined/null/might give error
console.log(obj.first)