在 JavaScript 中删除一个变量:
概括:
您在 JavaScript 中删除变量时遇到问题的原因是 JavaScript 不允许您这样做。你不能删除var
命令创建的任何东西,除非我们把兔子从我们的花招中拉出来。
删除命令仅适用于不是用 var 创建的对象属性。
JavaScript 将允许您在以下条件下删除使用 var 创建的变量:
您正在使用 javascript 解释器或命令行。
您正在使用 eval 并在那里创建和删除您的 var。
终端演示,使用delete boo
ordelete(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 中将变量设置为未定义,您有一个选择:
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!'
,那么每当您将变量设置为未定义时,它就会变成:“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
如果你没有使用严格,你可以删除这样创建的变量:
<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 将不会运行。