JavaScript 中如何检查变量是否为整数?

2024-01-05

如何在 JavaScript 中检查变量是否为整数,如果不是则抛出警报?我尝试了这个,但它不起作用:

<html>
    <head>
        <script type="text/javascript">
            var data = 22;
            alert(NaN(data));
        </script>
    </head>
</html>

这取决于,您是否也想将字符串转换为潜在的整数?

这会做:

function isInt(value) {
  return !isNaN(value) && 
         parseInt(Number(value)) == value && 
         !isNaN(parseInt(value, 10));
}

通过按位运算

简单解析和检查

function isInt(value) {
  var x = parseFloat(value);
  return !isNaN(value) && (x | 0) === x;
}

短路并保存解析操作:

function isInt(value) {
  if (isNaN(value)) {
    return false;
  }
  var x = parseFloat(value);
  return (x | 0) === x;
}

或者也许一次性两者兼而有之:

function isInt(value) {
  return !isNaN(value) && (function(x) { return (x | 0) === x; })(parseFloat(value))
}

Tests:

isInt(42)        // true
isInt("42")      // true
isInt(4e2)       // true
isInt("4e2")     // true
isInt(" 1 ")     // true
isInt("")        // false
isInt("  ")      // false
isInt(42.1)      // false
isInt("1a")      // false
isInt("4e2a")    // false
isInt(null)      // false
isInt(undefined) // false
isInt(NaN)       // false

这是小提琴:http://jsfiddle.net/opfyrqwp/28/ http://jsfiddle.net/opfyrqwp/28/

表现

测试表明短路解决方案具有最佳性能(操作/秒)。

// Short-circuiting, and saving a parse operation
function isInt(value) {
  var x;
  if (isNaN(value)) {
    return false;
  }
  x = parseFloat(value);
  return (x | 0) === x;
}

这是一个基准:http://jsben.ch/#/htLVw http://jsben.ch/#/htLVw

如果您喜欢更短、钝角的短路形式:

function isInt(value) {
  var x;
  return isNaN(value) ? !1 : (x = parseFloat(value), (0 | x) === x);
}

当然,我建议让缩小器来处理这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 中如何检查变量是否为整数? 的相关文章

  • AJAX 安全问题

    我希望能够解决一些关于 AJAX 安全性的问题 这是我试图理解的一个场景 假设我正在使用 AJAX 向页面请求一些半敏感材料 例如 我将把用户的 ID 传递给一个 php 文件 并返回一些关于他们自己的信息 现在 是什么阻止人们模拟此 Ja
  • 在有限的上下文中运行 JS 代码

    我正在尝试奔跑trusted 隔离 上下文中的 JS 代码 基本上想出了这个方法 function limitedEval src context return function with this return eval src call
  • 如何将值发布到输入框中?

    Intro I would like to get the current time after clicking at click and POST the value into input text box Note 假设包含引导样式表
  • JavaScript 字符串中的脚本标签[重复]

    这个问题在这里已经有答案了 我遇到一个问题 即 JavaScript 中带引号的字符串内有结束脚本标记 并且它正在杀死脚本 我认为这不是预期的行为 可以在这里看到这样的示例 http jsbin com oqepe edit http js
  • 在上传之前预览图像 VUEjs [重复]

    这个问题在这里已经有答案了 我知道这个问题已经被问过 但我不知道如何在vuejs中使用代码 我尝试了很多但没有任何结果 我还添加了我的代码 有人可以帮帮我吗 这是我的代码 谢谢 html
  • 如何将 Ajax.BeginForm MVC 助手与 JSON 结果一起使用?

    我正在尝试使用 ASP NET MVC Ajax BeginForm 帮助程序 但不想在调用完成时使用现有的内容插入选项 相反 我想使用自定义 JavaScript 函数作为回调 这可行 但我想要的结果应该以 JSON 形式返回 不幸的是
  • Javascript 作为对象键的函数与块中标记函数之间的语法冲突

    假设您有一个支持两者的浏览器带标签的函数声明 https developer mozilla org en US docs Web JavaScript Reference Statements label Labeled function
  • 使用 jQuery inputmask 插件范围 0-100

    如何创建 0 到 100 范围内的掩码 document ready function masked inputmask 您可以使用jquery inputmask regex extensions js为了那个原因 你可以找到带有所有扩展
  • 我可以在 GWT 中使用第三方 Javascript 库吗

    例如穆工具 用 js 编码对我来说很舒服 但显然不适合所有人 你当然可以 最好的事情就是给自己写一些好看的JavaScript 覆盖类型 http code google com webtoolkit doc latest DevGuide
  • websockets 如何处理同一浏览器的两个选项卡

    I have 1 个 PHP 服务器 提供 http 请求 和 1 node js 发布更新的数据消息 每个连接都带有 websocket php 服务器设置其 cookie 在一个浏览器中 此 cookie 可在所有选项卡中使用 当浏览器
  • .points 不透明度/大小在三个.js 内

    我回来回答有关 points 的第二个问题 这次想知道如何将不透明度从 0 更改为 1 然后又回到距发射器的特定像素距离内 var particleCount 14 particles new THREE Geometry pMateria
  • 通过 JavaScript 单击按钮/页面提交

    我想了解 asp net 框架如何知道何时单击了按钮 因此一旦收到请求 就会在服务器上触发其单击事件 我需要了解它是如何工作的 因为我想从 JavaScript 触发按钮的服务器单击事件 我能够从 JavaScript 执行页面提交 doc
  • jquery 中的函数返回未定义[重复]

    这个问题在这里已经有答案了 我在 jquery 中调用的函数返回未定义 我检查了该函数 当我对其进行调试时 它返回正确的数据 function addToPlaylist component type add to pl value pl
  • 从链接打开本地文件夹

    如何通过单击任何链接打开本地文件夹视图 我尝试了很多选择 例如 a href Open folder a or a Open folder a or a Open folder a 解决方案 启动可下载链接 以下内容适用于所有浏览器 但一如
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • 了解 Document.createElement()

    我在用着GWT及其底层DOM能力 我基本上想要实现的是 Have a div包含一些文本的元素 其中一些文本将被包围span元素 span 元素可相互拖动并提供上下文菜单 New span元素可以由最终用户动态创建 它可能是这样的 在应用程
  • javascript - 如何获取对象名称或关联数组索引名称?

    我有一个像这样的 JSON 对象 var list name1 element1 value1 name2 element1 value2 如何提取所有 nameX 字符串值 例如 假设我想将它们连接在一个字符串中输出 例如 name1 n
  • vuejs中如何获取组件编译后的html内容

    我有一个这样的组件
  • Vue - 调度完成后调用 store getter?

    我正在使用 Laravel 5 7 Vue2 Vuex 我在调度调用完成后让 Vue 返回存储值时遇到一些困难 我的申请流程如下 我单击一个提交按钮 该按钮调用组件上的 validate Validate 分派到我的 addLease 操作
  • 将引导程序弹出框保留在视口内

    我正在尝试使用带有按钮的侧边栏创建一个菜单 每个按钮都有一个指定的包含相关数据的弹出窗口 不幸的是 其中一个弹出窗口可能包含任意数量的行 并且在某些情况下它可能部分位于视口之外 See http jsfiddle net bfd9f 1 h

随机推荐

  • 如何设置 CMake 为 iPhone 构建库

    我正在尝试使用 CMake 通过手动设置某些属性来生成 iPhone 的 Xcode 配置 这是否是解决此问题的正确方法 我的 CMake 文件如下所示 project MYLIB set LIBRARY OUTPUT PATH PROJE
  • PHPStorm 类型提示基类的子类

    关于这篇文章 在 PHPStorm 中 当我有一个从每个子类返回不同类型的超类方法时 如何使类型提示起作用 https stackoverflow com q 26470325 178728 这是关于 PHPStorm 类型提示中的一种边缘
  • c# 检测文件是否已完成写入

    我正在编写一个 PowerPoint 加载项 用于通过 FTP 传输已转换为 WMV 的文件 我有以下代码可以正常工作 oPres CreateVideo exportName oPres SaveAs String Format expo
  • 使用 Vee-validate 禁用按钮,直到正确填写表单

    我想禁用我的提交按钮 直到我的表单正确填写 这就是我到目前为止所拥有的
  • 在颤动中动态创建的复选框不会改变单击时的状态

    每次按下按钮时 我都会创建一个复选框字段 但生成的复选框在按下时不会更改状态 而是生成的下一个复选框带有更改后的状态 我已附上其当前工作方式的视频 https i stack imgur com dWxxK jpg https i stac
  • 基于 where 谓词从 Rails API 中删除的 Curl 命令?

    我可以看到从here https medium com ConnorFinnegan how to use curl to test a rails api 55fd2c43c999如何根据id删除表记录 即删除 id 1 的用户记录 cu
  • 如何在 SharePoint 2010 Web 部件中显示图像

    我想知道如何在我的 SharePoint 2010 Web 部件中显示本地图像 我真的不知道在CSS中写哪个url Add SharePoint Images mapped folder http msdn microsoft com en
  • this == null // 这怎么可能?

    最近我发现我的应用程序有一些奇怪的行为 它主要用 C 开发 但也使用 CLI C 来实现更好的性能 在 TimeSpan 比较中 我通过一个非常简单的方法得到了 System NullReferenceException TimeSpan
  • 用于编译和运行 C++ 程序的 Bash 脚本

    我正在编写一个 bash 脚本来编译和运行 C 程序 这是我的脚本 bin bash PROG NAME 1 output g PROG NAME redirect the error to a variable echo output s
  • 如何通过主机名 ping docker 网络中的其他容器?

    我有一个简单的 docker compose 设置如下 version 3 services main image python 3 5 2 entrypoint usr bin yes network mode bridge anothe
  • C++ 分配给隐式转换的左值

    考虑一下这段 C 代码 struct Foo float value operator float return this gt value int main Foo foo foo 1 0f Doesn t compile foo isn
  • 对于相同的代码,在 CodeSkulptor 上得到错误的答案

    在在线课程中 在进行与 Python 中的字典相关的作业时 我的一位同事遇到了输出错误 但奇怪的是 相同的代码在 IDLE 上运行良好并打印了正确的代码 autograger 软件支持 Python 2 7 并且基于 Skulpt和 Cod
  • Spring Batch - 读一次写两次

    我是 Spring Batch 的新手 我的要求是我有一个阅读器 它通过 Web 服务调用 数据库调用获取记录 目前我正在将这些记录写入一个表 现在我需要处理相同的记录 读取器读取的记录 并将其写入另一个表中 这里要注意的一点是 第二次写入
  • 读取超级块

    我知道在 Unix 特别是 Mac OS X 中 超级块存储有关磁盘上数据布局的信息 包括 inode 开始和结束的磁盘地址 我想扫描程序中的索引节点列表以查找已删除的文件 如何找到 inode 开始的磁盘地址 我查看了 statfs 命令
  • Visual Studio 2013 内的 Git 远程操作会导致错误“指定的登录会话不存在。它可能已被终止”

    我在 Visual Studio 2013 中使用 Git 当我尝试对远程执行任何操作 如获取 拉取 推送等 时 出现以下错误 发生错误 详细消息 libgit2 引发错误 类别 网络 错误 指定的登录会话不存在 它可能已经被终止 我无法找
  • 错误使用 set 后 data.table 中的行数为负数

    我遇到了一些有点奇怪的事情 特别是因为代码每次运行时可能会给出不同的输出 简而言之 我错误地使用了set设置一行中的值大于最后一个值 但不执行任何操作set创建了负长度data table library data table dt lt
  • Java解析字符串

    我正在寻找在java中解析以下字符串
  • 将 Excel 行、列索引转换为 python/openpyxl 中的字母数字单元格引用

    我想将行索引和列索引转换为 Excel 字母数字单元格引用 例如 A1 我正在使用 python 和 openpyxl 我怀疑该包中的某处有一个实用程序可以执行此操作 但经过一番搜索后我没有找到任何东西 我编写了以下内容 该内容有效 但我宁
  • 如何判断 Samsung Game Tuner 是否正在更改分辨率

    正如其他帖子所示 三星的游戏调谐器可以默默地改变游戏的分辨率 使拖放不再起作用 我已更改我的应用程序来检查是否安装了 Game Tuner 但我想检测它是否已将分辨率更改为 我记录了 100 和 75 分辨率的标准和真实 DisplayMe
  • JavaScript 中如何检查变量是否为整数?

    如何在 JavaScript 中检查变量是否为整数 如果不是则抛出警报 我尝试了这个 但它不起作用 这取决于 您是否也想将字符串转换为潜在的整数 这会做 function isInt value return isNaN value par