设置为undefined

时间:2012-03-15 19:34:42

标签: javascript null undefined

我在整个代码库中都看到了这一点:

(function(undefined) {
    var foo = {
        dirtyRow: undefined,
        dirtyCells: undefined,
        ...
        clearDirty: function () {
            this.dirtyRow = undefined;
            this.dirtyCells = undefined;
        }
    }
})();

有人可以告诉我这有什么问题吗?我们应该做什么呢?

3 个答案:

答案 0 :(得分:3)

在此上下文中,

nullundefined更有意义,因为您正在定义变量,但尚未为它们赋值。

然而,nullundefined都是假值,因此大多数情况下行为都是相同的。

null是关键字,而undefined则不是。所以null会更“可靠”,即使你使用参数来确保undefined实际上是未定义的。

答案 1 :(得分:0)

有一件事是错误的,就是你根本不应该使用undefined“常量”,直到所有浏览器都符合最新版本的Javascript规范。

最近,规格将其更改为一个真正的常量,但所有旧浏览器都遵循较旧的规格,其中它是可写值。这意味着undefined标识符可以更改为不同的值,这当然会使代码执行不适合的操作。

答案 2 :(得分:0)

我认为这段代码没有任何问题。此方法用于确保undefined确实是“未定义”,因为在非严格模式(ES5)中您可以覆盖该值(因此,如果您使用第三方脚本或恶意脚本将在您的页面中注入)

基本上你有一个参数,你调用这个函数而不传递任何值,所以它将是“未定义的”。您可以获得相同的结果:

(function(u) {
    var foo = {
        dirtyRow: u,
        dirtyCells: u,
        ...
        clearDirty: function () {
            this.dirtyRow = u;
            this.dirtyCells = u;
        }
    }
})();

但是,当然,使用undefined更有意义。