有哪些依赖于返回对象的"typeof null"的代码示例?



我正在读一本名为YDKJS的书,其中提到:

typeof null是一个有趣的情况,因为它错误地返回"object",而你期望它返回"null"

警告:这是 JS 中长期存在的错误,但可能永远不会修复。Web 上太多的代码依赖于该错误,因此修复它会导致更多的错误!

我无法理解任何使用null返回类型的代码。任何人都可以给出一些示例用例吗?

不是他们使用null的返回类型,而是变量的返回类型。

我的意思是,开发人员在很多情况下编写:

if (typeof something === "object"){
}

并且期望通过此条件的任何东西也null

因此,他们依赖于这样一个事实,即任何依赖于true语句块中的任何内容来保存甚至null值。

假设我们有这段代码:

switch (typeof something) {
case "object":
if (something) {
doSomethingWithObject(something);
} else {
rejectTransaction(); // we have null
}
break;
case "undefined":
throwAMeaningfulError();
break;
default:
doSomethingWithNumberOrString(something);
break;
}

可以看出,我们正在处理所有情况,无论是objectundefinedstringnumber还是null

如果这个错误被修复,并且typeof null会返回null,那么rejectTransaction将永远不会被调用。相反,将调用doSomethingWithNumberOrString

我并不是说这是一个很好的代码示例,而是可能会破坏某些代码,因为开发人员依赖于typeof null返回"object"而不是"null"

从类型的角度来看,null属于object类型是有意义的。就像NaNInfinity属于number型是有道理的.

因为如果不是对象,可空变量还会引用什么?

原语在javascript中是不可变的。您不会得到它们的参考,而是副本。

相关内容

最新更新