【问题标题】:Modify parseInt method: Javascript修改 parseInt 方法:Javascript
【发布时间】:2012-10-12 07:33:55
【问题描述】:

我不想每次都使用parseInt('08', 10) 将每个字符串转换为整数,

我们可以修改parseInt 方法,这样我就可以只使用parseInt('08') 而不是parseInt('08', 10)。?

【问题讨论】:

    标签: javascript parseint


    【解决方案1】:

    您可以像这样定义自己的函数,而不是修改内置函数parseInt:

    function prseInt(n)
    {
        return parseInt(n, 10);
    }
    

    并将您在应用中使用的所有parseInt(n, 10) 替换为prseInt(n)。

    好吧,如果你还想重新定义,你可以这样做:

    var origParseInt = parseInt;
    parseInt = function(n) {
         return origParseInt(n, 10);
    }
    

    而且它有效!

    小提琴:http://jsfiddle.net/QKKwv/

    【讨论】:

    • 这是简单的方法,但我不想为此介绍任何新方法,是否可以修改内置函数来实现它?
    • 太好了,直到另一个开发人员出现并认为他们发现了一个错字并将您所有的 prseInt 更正为 parseInt
    • 不能修改内置函数。但是,是的,可能会在答案中更新。
    • @PraveenKumar - 获取什么?
    • @PraveenKumar - 哈哈哈,我看你还没有厌倦这个行业。给它时间。在理想的世界中,每个新开发人员都了解他们被分配到的项目的所有内容。在现实世界中,它是许多人多年来开发的泥球。没有什么是有据可查的,也没有具体的指导方针。
    【解决方案2】:

    在你的字符串前面简单地使用+ 操作符来执行类型强制(并且不需要调用parseInt())

    var str = "08";
    var num = +str;
    
    console.log(num, typeof num);  // 8, number
    

    【讨论】:

      【解决方案3】:

      parseInt(xx)(即,没有 radix 参数)在 99% 的情况下都可以正常工作,它会尝试猜测您所追求的基数。

      对于像 8 这样的单个数字,它会正确猜测 basse10 并给你整数 8。问题是像 08 这样的字符串,它会猜测你想要的是八进制,并转换 "08" to octal returns zero。

      您应该始终在使用parseInt 时提供基数参数。

      【讨论】:

      • 是的..你说的很对,但是我们不能修改内置方法,所以我们可以每次都使用 parseInt(value) 而不是 parseInt(value, radix)?
      • 您可以按照我的解释使用parseInt(value) - 只要您了解行为。如果value 的前缀是0,它会将其转换为八进制。不,你不能修改内置方法,否则它不会是“内置的”。
      猜你喜欢
      • 2022-07-27
      • 1970-01-01
      • 2012-07-13
      • 1970-01-01
      • 2020-06-09
      • 2015-05-23
      • 2012-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多