为什么我可以在javascript中删除声明为a = 1且未声明var b = 1的变量

Mar*_*Aja 2 javascript

让我们假设我们处于全球范围:

当我在JS中声明一个变量时:

a = 1
Run Code Online (Sandbox Code Playgroud)

我知道这不是正确的方法(但这不是问题).我可以用:

delete a (> returns true)
Run Code Online (Sandbox Code Playgroud)

但是当我宣布:

var b = 1
Run Code Online (Sandbox Code Playgroud)

我不能用:

delete b (> returns false)
Run Code Online (Sandbox Code Playgroud)

谁能解释这种行为?

dec*_*eze 8

delete仅对对象的属性有效.它对变量或函数名称没有影响.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete

a变得/最终被解释为window.a,同时b明确指的是局部变量.

  • 是的,我们不要进入那个,否则我们都需要喝一杯烈酒......;) (2认同)