【问题标题】:Why most of the Number prototype functions has a global duplicate function?为什么大多数 Number 原型函数都有全局重复函数?
【发布时间】:2016-11-28 23:28:41
【问题描述】:

我真的很想知道,拥有 2 个重复函数的目的是什么。

例如:

isFinite() 和 Number.isFinite()

isNaN() 和 Number.isNaN()

但是例如没有IsInteger()函数,当有Number.isInteger()时。

有什么区别?

为什么存在重复?

什么时候应该使用数字原型函数或全局函数?

【问题讨论】:

  • Number.isNaNNumber.isFinite 的 MDN 文档回答您的问题。
  • 大部分... Javascript 是在匆忙中创建,直到后来才开始标准化和实际的设计 过程。当今 Javascript 中的大多数令人头疼的东西都是历史的意外,并且仍然存在以实现向后兼容性。
  • 那些不是Number.prototype 方法

标签: javascript


【解决方案1】:

正如@squint 和@deceze 所指出的,全局版本是为了向后兼容而保持完整的旧版本。它们有如下明显的差异,因为全局变量在测试之前将值转换为Number

isNaN('NaN'); //true
Number.isNaN('NaN')//false ,considers it as a string

Number.isFinite('100');//false ,considers it as a string
isFinite('100');//true 

目的是不破坏为旧实现编写的代码,并为新开发人员提供更好的代码。 (与向后兼容相同)

【讨论】:

    猜你喜欢
    • 2019-02-02
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    相关资源
    最近更新 更多