parseInt 与 unary plus,何时使用哪个?

2024-01-15

这条线有什么区别:

var a = parseInt("1", 10); // a === 1

和这条线

var a = +"1"; // a === 1

This jsperf测试 http://jsperf.com/parseint-vs-unary-operator表明一元运算符在当前的 chrome 版本中要快得多,假设它是用于 Node.js!?

如果我尝试转换不是数字的字符串都会返回NaN:

var b = parseInt("test", 10); // b === NaN
var b = +"test"; // b === NaN

那么我什么时候应该更喜欢使用parseInt一元加号(尤其是在 Node.js 中)???

edit: 与双波浪线运算符有什么区别~~?


The ultimate whatever-to-number conversion table: Conversion table

EXPRS = [
    'parseInt(x)',
    'parseFloat(x)',
    'Number(x)',
    '+x',
    '~~x',
    'x>>>0',
    'isNaN(x)'

];

VALUES = [
    '"123"',
    '"+123"',
    '"-123"',
    '"123.45"',
    '"-123.45"',
    '"12e5"',
    '"12e-5"',
    
    '"0123"',
    '"0000123"',
    '"0b111"',
    '"0o10"',
    '"0xBABE"',
    
    '"4294967295"',
    '"123456789012345678"',
    '"12e999"',

    '""',
    '"123foo"',
    '"123.45foo"',
    '"  123   "',
    '"foo"',
    '"12e"',
    '"0b567"',
    '"0o999"',
    '"0xFUZZ"',

    '"+0"',
    '"-0"',
    '"Infinity"',
    '"+Infinity"',
    '"-Infinity"',
    'BigInt(1)',

    'null',
    'undefined',
    'true',
    'false',
    'Infinity',
    'NaN',

    '{}',
    '{valueOf: function(){return 42}}',
    '{toString: function(){return "56"}}',

];

//////

function wrap(tag, s) {
    if (s && s.join)
        s = s.join('');
    return '<' + tag + '>' + String(s) + '</' + tag + '>';
}

function table(head, rows) {
    return wrap('table', [
        wrap('thead', tr(head)),
        wrap('tbody', rows.map(tr))
    ]);
}

function tr(row) {
    return wrap('tr', row.map(function (s) {
        return wrap('td', s)
    }));
}

function val(n) {
    return n === true || Number.isNaN(n) || n === "Error" ? wrap('b', n) : String(n);
}

var rows = VALUES.map(function (v) {
    var x = eval('(' + v + ')');
    return [v].concat(EXPRS.map(function (e) {
        try {
            return val(eval(e));
        } catch {
            return val("Error");
        }
    }));
});

document.body.innerHTML = table(["x"].concat(EXPRS), rows);
table { border-collapse: collapse }
tr:nth-child(odd) { background: #fafafa }
td { border: 1px solid #e0e0e0; padding: 5px; font: 12px monospace }
td:not(:first-child) { text-align: right }
thead td { background: #3663AE; color: white }
b { color: red }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

parseInt 与 unary plus,何时使用哪个? 的相关文章

随机推荐

  • PHP 狂饮。如何为多部分 POST 请求设置自定义边界?

    如何为多部分 POST 请求设置自定义边界 以下请求选项配置不起作用 headers gt Content Type gt multipart form data boundary CUSTOM BOUNDARY Guzzle 使用 psr
  • SSH:本地主机登录成功后关闭连接

    当我尝试 ssh 进入 localhost 时 它接受公钥并立即关闭连接 我已经浏览谷歌结果页面几个小时了 但没有任何进展 这就是我得到的ssh v user localhost OpenSSH 5 9p1 OpenSSL 0 9 8r 8
  • Javascript旧语法到箭头函数的转换

    所以我想在没有 jquery 或其他库的情况下使用这个例子 我有这个代码 let xmlHttp new XMLHttpRequest xmlHttp onreadystatechange function 正如你所看到的 它使用旧的风格f
  • 在 R 中生成 DNA 密码子组合

    我在 R 中生成随机 DNA 序列 其中每个序列都有设定的长度 并包含用户指定的核苷酸分布 我想要做的是确保特定的核苷酸运行不会在给定的序列中生成 不允许的运行有 aga agg taa tag 和 tga 这是我的代码 它只是生成可能发生
  • jQuery 令人不快的 Draggable、Resizing 交互

    当我调整第一个 div 的大小时 它会导致下一个 div 在列中 向上 跳跃 重新创建 顶部 div 拖动调整大小手柄 jQuery function portlet draggable grid 25 25 resizable grid
  • 禁用字体连字 CSS(字母组合)

    现代浏览器会自动将一些字母 最常见的是 f 和 i 组合成一个称为连字的单个字符 这通常会优化易读性 即更容易阅读 但有时这可能不是设计师想要的 就我个人而言 我只在Chrome 版本53 0 2785 101 虽然我不能确定 但 我相信这
  • 关于 Android API 中的新方法和已弃用的方法

    我是安卓开发新手 我正在学习过时的书籍 所以我对新方法感到非常困惑 我将制作一个简单而轻便的应用程序 即使在旧设备上也可以运行 因此 当我创建一个新的android项目时 我将 Minimum required SDK 设置为API 8 T
  • 返回导出模块的最佳方法

    在我的学习之旅中 我开始研究 javaScript Node 的模块 让我困惑的是 当模块内完成功能的时间未知时 如何从模块返回信息 这将按预期返回 控制器 js const myModule require myModule var my
  • React中如何通过Key查找元素?

    ul li 1234 li li 5678 li li 9 li ul 如何通过Key查找元素并更改元素值 如addClass innerHtml 注意 在 Plain React 中 没有 Flux 或 Jsx 进入key已在 React
  • 为什么 groupby 和rolling 不能一起工作?

    我有一个从 coinmarketcap 中抓取的 df 我正在尝试计算 close price 列的波动率指标 但是当我使用 groupby 时 我收到一条错误消息 final coin data vol final coin data g
  • Doctrine2:[语义错误]如果不选择至少一个根实体别名,则无法通过标识变量选择实体

    这是我使用查询生成器进行的查询 它运行得很好 带来了用户表和模块表的所有结果 其中具有多对多关联 public function getUser id qb this gt getEm gt createQueryBuilder gt se
  • 具有引用完整性的 NoSQL/RDBMS 混合(删除级联)?

    是否有一种数据库可以为您带来引用完整性的优势并能够使用 SQL 类型语言进行查询 同时还可以松散地定义实体的数据属性以及它们之间的关系 例如 采用 RBAC 类型模型 其中有权限 用户 用户组和角色 复杂 灵活的模型可能具有以下规则 角色可
  • Python:如何创建一个要求准确字数的函数?

    这是我到目前为止所拥有的 import string 所以我让用户写一个 5 个单词的句子 只要求 5 个单词 def main sentence raw input Enter a 5 worded sentence if len wor
  • IIS 7.5 没有图像 css js 显示

    我有 2 台 Windows 2008 R2 x64 服务器 NLB ARR 具有共享配置 我的应用程序文件位于网络共享中 ASP net 页面 aspx 运行良好 但 css 图像 js 不起作用 我还有一个 htm 文件 可以很好地显示
  • 反编译Obj C框架

    我想反编译iOS Twitter 框架 如果事实上我从xcode 的模拟器中获取twitterd 文件 该文件已预编译为在x86 而不是ARM 上运行 至于我使用的工具http code google com p i386codedump
  • 需要快速读取 Android 传感器

    Issue 我正在开发一个应用程序 每 5 需要一个新的加速度数据 毫秒 我的方法 我创建了一个远程服务 只读取加速度 来自 SensorManager 的数据 我还将读取速率设置为 初始化时 延迟最快 传感器管理器 然后我也使用IPC进行
  • 如何在 Windows 7 64 位上安装 GitHub 时修复此错误

    http picsmashup com images jnasdh JPG http picsmashup com images jnasdh JPG 组件 Microsoft NET Framework 4 x86 和 x64 安装失败
  • Wix Burn 捆绑包 - 必须是管理员

    我创建了一个 WIX 刻录包 在捆绑包中 我安装了 Net 4 如果未安装 然后再安装 2 个 msi 文件 1 是第三部分 msi 另一个是我使用 WIX 为我的软件创建的 msi 我需要成为计算机上的管理员才能运行这些 msi 文件 如
  • OpenCV 中组合仿射变换的内置函数?

    Opencv中有没有结合仿射变换的内置函数 我也可以自己编写它 但如果可能的话我会坚持使用库函数 Cheers 现在我这样做 我分配 a1 a2 r 矩阵 所有 3x3 眼睛 我用变换矩阵 a1aff a2aff 替换前两个矩阵的顶部部分
  • parseInt 与 unary plus,何时使用哪个?

    这条线有什么区别 var a parseInt 1 10 a 1 和这条线 var a 1 a 1 This jsperf测试 http jsperf com parseint vs unary operator表明一元运算符在当前的 ch