这是我的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
变量,因此它的值未定义?
答案 0 :(得分:23)
答案 1 :(得分:22)
<强>要点:强>
您在JavaScript中删除变量时遇到问题的原因是JavaScript不会让您失望。你不能删除var
命令创建的任何东西,除非我们把一只兔子拉出来。
delete命令仅适用于未使用var创建的对象属性。
JavaScript允许您在以下条件下删除使用var创建的变量:
您正在使用javascript解释器或命令行。
您正在使用eval,并在那里创建和删除var。
在终端上演示,使用delete boo
或delete(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)