为啥我可以在javascript中删除一个声明为a = 1的变量而不是一个声明的var b = 1 [重复]
Posted
技术标签:
【中文标题】为啥我可以在javascript中删除一个声明为a = 1的变量而不是一个声明的var b = 1 [重复]【英文标题】:Why can I delete a variable declared a = 1 and not one declared var b = 1 in javascript [duplicate]为什么我可以在javascript中删除一个声明为a = 1的变量而不是一个声明的var b = 1 [重复] 【发布时间】:2016-04-26 01:41:10 【问题描述】:假设我们在全局范围内:
当我在 JS 中声明一个变量时:
a = 1
我知道这不是正确的方法(但这不是问题)。 我可以使用:
delete a (> returns true)
但是当我声明时:
var b = 1
我不能使用:
delete b (> returns false)
谁能解释这种行为?
【问题讨论】:
完整代码是什么?一个是全局变量(没有 var),另一个是声明它的函数的本地变量。 【参考方案1】:
delete
仅对对象的属性有效。它对变量或函数名称没有影响。https://developer.mozilla.org/en-US/docs/Web/javascript/Reference/Operators/delete
a
变成/最终被解释为window.a
,而b
显然指的是一个局部变量。
【讨论】:
您也可以通过window.b
访问b
这一事实也增加了混乱...
是的,我们不要讨论这个问题,否则我们都需要一杯烈性酒...... ;)以上是关于为啥我可以在javascript中删除一个声明为a = 1的变量而不是一个声明的var b = 1 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
为啥在 JavaScript 中使用 getRangeAt() 会从选择中删除一些内容?