作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在阅读有关使用 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);
谁能理解,为什么我的 delete VARIABLE 返回 false(在 Firefox 中)并且严格模式显示如下警告:
SyntaxError: applying the 'delete' operator to an unqualified name is deprecated
console.log('delete foo: ', delete foo);
最佳答案
您不能在 javascript 中删除普通变量。您可以删除对象的属性,但不能删除变量。因此,不允许您尝试执行的操作。如果您想释放该变量的内容(假设没有其他引用它指向的数据),您只需将变量设置为 null
。
消息中关于 unqualified
的部分可能只是指指定属性必须不仅仅是像您那样的非限定名称这一事实。它必须有一个对象引用。
正如 DCoder 在评论中提到的,这是一个 good reference了解删除运算符。
关于javascript - Firebug 将 'delete' 运算符应用于不合格的名称已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11819145/
我是一名优秀的程序员,十分优秀!