让我们假设我们处于全球范围:
当我在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)
谁能解释这种行为?
delete仅对对象的属性有效.它对变量或函数名称没有影响.https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete
a变得/最终被解释为window.a,同时b明确指的是局部变量.