一些javascript tomfoolery:
如果有效
undefined = true;
那你怎么能恢复设置undefined
回到代表undefined
?
当然,在将undefined
设置为undefined
之前,最简单的方法是将true
存储在另一个变量中。还有什么方法可以恢复undefined
?
首先想到的是将其设置为delete undefined;
,但没有效果。
答案 0 :(得分:8)
Alex's answer是确保undefined
未定义的安全且实用的方法。
但是JS非常灵活,所以为了好玩,如果你想恢复全球 undefined
,那么你可以重新分配window.undefined
新功能范围的安全性:
(function () { // Create a new scope
var a; // "a" is undefined in this scope
window.undefined = a; // Set the global "undefined" to "a"
})() // Execute immediately
进一步了解这个想法,你可以重新配置以上内容:
undefined = (function () {
var a; // "a" is undefined
return a; // return "a"
})();
或者真的,就是这样:
undefined = (function () {
return;
})();
但事实上,你实际上并不需要归还任何东西:
undefined = function(){}();
当然,还有void
operator ;-) doh!
undefined = void 0;
答案 1 :(得分:7)
(function(undefined) {
// undefined is undefined again!
})();
jQuery使用这种模式。
delete
运算符最适合从对象中删除属性。有许多事情无法解决,将Array
与undefined
一起使用只会将元素设置为in
(不会使用splice()
进行枚举) 。最好将Array
与{{1}}一起使用。