undefined = true;然后回到undefined?

时间:2011-04-20 04:40:02

标签: javascript undefined

一些javascript tomfoolery:

如果有效

undefined = true;

那你怎么能恢复设置undefined回到代表undefined


当然,在将undefined设置为undefined之前,最简单的方法是将true存储在另一个变量中。还有什么方法可以恢复undefined

首先想到的是将其设置为delete undefined;,但没有效果。

2 个答案:

答案 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运算符最适合从对象中删除属性。有许多事情无法解决,将Arrayundefined一起使用只会将元素设置为in(不会使用splice()进行枚举) 。最好将Array与{{1}}一起使用。