为什么不是't parseInt一个方法

Why isn't parseInt a method?

本文关键字:一个 方法 parseInt 为什么不      更新时间:2023-09-26

为什么parseInt是函数而不是方法?

功能:

var i = parseInt(X);

方法:

var i = X.parseInt();

编辑:

我不能100%确定为什么parseInt不是String的方法,只是它可以在任何东西上运行。看起来它可能是Math的一部分,但它也不是真正的数学运算。

结束编辑

parseInt是全局对象的一种方法。在浏览器中,全局对象为window。您可以调用window.parseInt(),但是JS引擎允许您快捷地调用全局方法。

也就是说,由于引擎必须扫描作用域链来查找parseInt的定义,因此它需要一些成本。一般来说,如果我在一个范围内对这样的方法进行单个调用,我会将其从全局引用:

var foo = function (someString) {
    var bar;
    // ...
    bar = window.parseInt(someString, 10);
    // ...
};

然而,如果我的代码需要在一个范围内对方法进行多个调用,我会对其进行本地化并使用引用:

var foo = function (someString, someOtherString) {
    var parseInt = window.parseInt,
      bar,
      baz;
    // ...
    bar = parseInt(someString, 10);
    baz = parseInt(someOtherString, 10);
    // ...
};