Firebug 不推荐将“delete”运算符应用于非限定名称
Firebug gives applying the 'delete' operator to an unqualified name is deprecated
我正在阅读有关JavaScript中的OO编程的书,并得到了一些奇怪的行为:
function f1() {
var a = 1;
console.log('a in f1 function ', a);
console.log('f2() called ', f2());
return 'f1 return value';
}
function f2() {
console.log('a value in f2() ', a);
return a;
}
var a = 5;
a = 55;
var foo = 'bar';
console.log('delete a: ', delete a);
console.log(a);
console.log(f1());
console.log('delete window.f2: ', delete window.f2);
console.log(f1());
console.log('delete foo: ', delete foo);
谁能理解,为什么我的删除变量返回 false(在 Firefox 中)和严格模式显示警告,例如:
SyntaxError: applying the 'delete' operator to an unqualified name is deprecated
console.log('delete foo: ', delete foo);
你不能删除 javascript 中的普通变量。 可以删除对象上的属性,但不能删除变量。 因此,您尝试做的事情是不允许的。 如果要释放该变量的内容(假设没有对它指向的数据的其他引用),则可以将变量设置为 null
。
消息中关于unqualified
的部分可能只是指这样一个事实,即指定属性必须不仅仅是像您那样的非限定名称。 它必须有一个对象引用。
正如DCoder在评论中提到的,这是理解删除运算符的良好参考。
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何将返回的值应用于多个不同位置的多个选择器
- ThreeJS将画布中的文本渲染为纹理,然后应用于平面
- 如何使jQuery中的悬停函数单独应用于数据库映像
- 如何将jquery函数仅应用于大屏幕
- 将jQuery事件应用于所有类元素
- 在将绑定应用于控制器之后,是否会发出Angular$scope事件
- 如何在ExtJs中获得将应用于给定类列表的样式
- 将 CSS 应用于禁用的输入按钮
- 如何从应用于正文的css中排除特定的表单
- jQuery+Android.将功能(Touchstart、touchmove)应用于实时加载的内容
- 将敲除绑定应用于模板,并将结果作为字符串获取
- 如何将Angular2管道应用于动态内容
- 动画功能不应用于每个元素
- 仅将JavaScript应用于部分代码(例如菜单)
- 将iframe中的css类应用于主文档
- Firebug 不推荐将“delete”运算符应用于非限定名称
- 应用于表示负十六进制的字符串的 JS 一元加运算符的行为
- 将逐位运算符应用于数组的值
- 将++运算符应用于函数的返回值会导致错误