我在整个代码库中都看到了这一点:
(function(undefined) {
var foo = {
dirtyRow: undefined,
dirtyCells: undefined,
...
clearDirty: function () {
this.dirtyRow = undefined;
this.dirtyCells = undefined;
}
}
})();
有人可以告诉我这有什么问题吗?我们应该做什么呢?
答案 0 :(得分:3)
null
比undefined
更有意义,因为您正在定义变量,但尚未为它们赋值。
然而,null
和undefined
都是假值,因此大多数情况下行为都是相同的。
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
更有意义。