JavaScript是否能删除var声明的变量

 我来答
_御少
2012-11-19 · TA获得超过976个赞
知道小有建树答主
回答量:208
采纳率:0%
帮助的人:81.2万
展开全部

可以删除的

如你截图所示 delete x; 结果为 true , 标明已被删除 

你再输入 x 回车后 将会提示  x is not defined 


如图所示

mozily
推荐于2018-03-20 · TA获得超过1789个赞
知道小有建树答主
回答量:472
采纳率:0%
帮助的人:393万
展开全部

你在控制台中出现的结果属于特殊情况。。。。下面将给你解惑

var有三种声明的情形:

  1.     var声明的全局变量

  2.     var在函数范围内声明的局部变量

  3.     eval中声明的全局变量。

你的情况属于第3种,在firebug和chrome的控制台中输入的代码最终是用eval的方式执行的。


首先,1、2种情形var声明的变量是无法删除的。尽管var声明的全局变量是属于window对象的属性(在浏览器中),但依然是无法删除的,因为这种属性的configurable=false,因此不能delete掉。局部变量就更不用说了,连var变量依附的对象都不知道在哪里,肯定无法删除。而eval('var a = 1')看似和直接var是一样的效果(当然是在全局作用执行eval),执行完也会在window对象上创建一个a属性,但是这个属性的configurable=true,因此可以删除。

给你一段代码自己试验,看看各个属性的描述是什么。

<script type="text/javascript">

var a = 1;

console.log(Object.getOwnPropertyDescriptor(window, 'a'));

with ({}) {

var b = 1;

console.log(Object.getOwnPropertyDescriptor(window, 'b'));

console.log(delete b);

}

eval('var c = 1');

console.log(Object.getOwnPropertyDescriptor(window, 'c'));

</script>

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1928968
2015-10-16 · TA获得超过108个赞
知道小有建树答主
回答量:428
采纳率:55%
帮助的人:149万
展开全部
不能。。
你重新给其赋值 undefined
或重新声明

var a = 0;
var a;
var a = 0 ;
a = undefined;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式