获取 Javascript 变量类型的更好方法?

2023-11-26

在 JS 中是否有更好的方法来获取变量的类型typeof?当你这样做时它工作得很好:

> typeof 1
"number"
> typeof "hello"
"string"

但当你尝试时它是无用的:

> typeof [1,2]
"object"
>r = new RegExp(/./)
/./
> typeof r
"function"

我知道instanceof,但这需要你事先知道类型。

> [1,2] instanceof Array
true
> r instanceof RegExp
true

有没有更好的办法?


安格斯·克罗尔 (Angus Croll) 最近写了一篇关于此的有趣博客文章 -

http://javascriptweblog.wordpress.com/2011/08/08/fixing-the-javascript-typeof-operator/

他详细介绍了各种方法的优缺点,然后定义了一种新方法“toType” -

var toType = function(obj) {
  return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase()
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 Javascript 变量类型的更好方法? 的相关文章

随机推荐

  • 是否可以通过 Chrome 扩展中的上下文菜单项调用内容脚本方法?

    我正在尝试使用上下文菜单项来调用在内容脚本中编写的方法 那可能吗 正如我所尝试的那样 上下文菜单只能在后端执行操作 E g A generic onclick callback function function genericOnClic
  • 如何在 Linux UVC 驱动程序中启用 UVC_QUIRK_FIX_BANDWIDTH 怪癖?

    我目前正在尝试运行 2webcams在 Wandboard 板上 它们必须共享 USB 集线器 问题是 当前的驱动程序实现 仅限 YUV 使 USB 集线器饱和 最终我只能连接一台相机 然而 UVC 驱动程序的实现有一个怪癖kind情况等
  • dplyr sample_n 其中 n 是分组变量的值

    我有以下分组数据框 我想使用该功能dplyr sample n从此数据框中为每个组提取行 我想使用分组变量的值NDG每组中的行数作为从每组中提取的行数 gt dg tmp lt structure list Gene c CAMK1 GHR
  • 下载功能因文件过大而失败

    你好 我的下载功能 protected void downloadFunction string fileName string filePath D SoftwareFiles LogMessageToFile Download star
  • 具有 ASPN、应用内购买等的多个应用程序中的应用程序 ID 和捆绑种子 ID

    我将创造多个销售版本具有推送通知功能的同一应用程序 酷应用 完整版 CoolApp Free 免费 功能有限 版本 酷应用程序中的应用程序 免费版 可通过应用内升级至完整版 购买 在 Apple Program Portal 中注册 App
  • 在正则表达式中将空格转换为制表符

    在正则表达式中如何表达以下内容 foreach line look at the beginning of the string and convert every group of 3 spaces to a tab Stop once
  • 我应该如何在 JavaScript 中“屈服”?

    我对现代 JavaScript ES8 有点陌生 异步产生的首选方法是什么 即在事件循环的未来迭代中继续执行脚本 使用await 我看到了以下选项 async function yield1 await Promise resolve co
  • 将 std::unique_ptr 与分配器一起使用

    这次我尝试使用分配器 感觉有很多机会泄漏资源 所以我想如果我用怎么办std unique ptr来处理它们 我试着用我的手std vector的分配器 我的代码是这样的 allocator include
  • PHP 不带引号的数组访问

    我在现有的 php 源代码中发现了一个现象 不带撇号的字段访问 如下所示 GET test 我不确定 也不知道这是一种可能的方式 所以我写了一个简短的例子来测试 echo Array Test fields without apostrop
  • 使用 asyncio 的相互递归协程

    我有一个假设 如果我用 asyncio 编写相互递归协程 它们不会遇到最大递归深度异常 因为事件循环正在调用它们 并且像蹦床一样运行 然而 当我这样写时 情况并非如此 import asyncio asyncio coroutine def
  • python 在 root 脚本中以普通用户身份运行命令

    我有一个以 root 身份启动的 python 脚本 我无法更改它 我想知道是否可以以普通用户身份执行此脚本的某些行 或所有脚本 我不需要 root 权限来运行此脚本 原因是 我使用通知 并且 python notify 不适用于 root
  • 如何查找具有相同捆绑包标识符的多个应用程序?

    有谁知道 在文件系统中 查找具有给定包标识符的每个应用程序的好方法 NSWorkspace和启动服务可让您通过捆绑包标识符查找应用程序 但仅返回单个结果 我怀疑聚光灯 NSMetadataQuery 可能会有所帮助 但我对其 API 有点不
  • 如何使用 s3 中的预训练模型来预测某些数据?

    我已经使用 sagemaker 训练了语义分割模型 并且输出已保存到 s3 存储桶中 我想从 s3 加载这个模型来预测 sagemaker 中的一些图像 我知道如何预测训练后是否让笔记本实例继续运行 因为它只是一个简单的部署 但如果我想使用
  • 向 Python enum.IntEnum 添加属性和起始值

    如何定义一个以某种方式派生的 Python 枚举类int 具有自定义起始值 并添加自定义属性 我知道如何从中得出int using enum IntEnum并设置起始值 Goo enum IntEnum Goo MOO FOO LOO st
  • Keras:重塑以连接 lstm 和 conv

    这个问题作为一个问题而存在github问题 也 我想在 Keras 中构建一个神经网络 其中包含 2D 卷积和 LSTM 层 网络应对 MNIST 进行分类 MNIST中的训练数据是60000张手写数字0到9的灰度图像 每张图像都是28x2
  • Android 模拟器将 600x1024 MDPI 报告为 XLarge?

    我目前正在尝试测试现有应用程序与即将发布的 Amazon Kindle Fire 平板电脑的兼容性 他们说将模拟器设置为 600x1024 将 LCD 密度设置为 169 https developer amazon com help fa
  • Pandas DataFrames/Series 之间的大于/小于比较

    如何在 DataFrame 和 Series 之间进行比较 我想屏蔽 DataFrame Series 中大于 小于另一个 DataFrame Series 中的元素的元素 例如 以下内容不会替换大于平均值的元素 与 nans 一起 尽管我
  • ReactJS.NET MVC 教程不起作用?

    我正在尝试在 Visual Studio 中设置一个新项目 该项目将是 MVC 5 其中包含用 ReactJS 编写的单页应用程序 所以我跟着ReactJS 网站上的指南 我到达了运行项目的第一部分 由于 JSX 我遇到了语法错误 浏览器似
  • 毫无例外地处理 STL 错误

    我有一个项目大量使用STL 现在我正在努力将项目移植到不支持异常的特定平台 我可以禁用异常 但是我仍然需要处理 STL 错误 是否有任何方法可以在禁用异常的情况下正确处理 STL 错误 是否有任何第三方 STL 实现可以帮助解决这个问题 使
  • 获取 Javascript 变量类型的更好方法?

    在 JS 中是否有更好的方法来获取变量的类型typeof 当你这样做时它工作得很好 gt typeof 1 number gt typeof hello string 但当你尝试时它是无用的 gt typeof 1 2 object gt