什么是依赖'typeof null'返回对象的代码示例?

Nag*_*sad 4 javascript typeof

我正在读这本名为YDKJS的书,它提到:

typeof null是一个有趣的案例,因为"object"当你期望它返回时,它会错误地返回"null".

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

我无法绕过任何使用a的返回类型的代码null.任何人都可以举一些例子用例吗?

Ade*_*lin 5

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

我的意思是开发人员正在编写的案例很多:

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

}
Run Code Online (Sandbox Code Playgroud)

并且期望通过这种条件的任何事情都可以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;
}
Run Code Online (Sandbox Code Playgroud)

可以看出,我们正在处理所有的情况下,无论是object,undefined,string,numbernull.

如果这个bug会被修复,并且typeof null会返回null,rejectTransaction那么永远不会被调用.相反,doSomethingWithNumberOrString会被召唤.

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