首页 > JavaScript > 如何确定变量是字符串还是 JavaScript 中的其他内容?

如何确定变量是字符串还是 JavaScript 中的其他内容?

上一篇 下一篇

如何确定变量是字符串还是 JavaScript 中的其他内容?

分割线

网友回答:

您可以使用运算符:typeof

var booleanValue = true; 
var numericalValue = 354;
var stringValue = "This is a String";
var stringObject = new String( "This is a String Object" );
alert(typeof booleanValue) // displays "boolean"
alert(typeof numericalValue) // displays "number"
alert(typeof stringValue) // displays "string"
alert(typeof stringObject) // displays "object"

此网页中的示例。(示例略有修改)。

对于使用 创建的字符串,这不会按预期工作,但这很少使用,建议使用 [1][2]。如果您愿意,请参阅其他答案,了解如何处理这些问题。new String()


  1. Google JavaScript Style Guide 说永远不要使用原始对象包装器。
  2. Douglas Crockford 建议弃用基元对象包装器。

分割线

网友回答:

这对我有用:

if (typeof myVar === 'string' || myVar instanceof String)
// it's a string
else
// it's something else

分割线

网友回答:

由于 580+ 人投票支持错误答案,800+ 人投票支持有效但霰弹枪式的答案,我认为可能值得以每个人都能理解的更简单的形式重做我的答案。

function isString(x) {
  return Object.prototype.toString.call(x) === "[object String]"
}

或者,内联(我有一个UltiSnip设置):

Object.prototype.toString.call(myVar) === "[object String]"

仅供参考,巴勃罗·圣克鲁斯的答案是错误的,因为typeof new String("string")object

DRAX的答案是准确和实用的,应该是正确的答案(因为巴勃罗·圣克鲁斯绝对是不正确的,我不会反对普选。

然而,这个答案也绝对是正确的,实际上是最好的答案(也许除了使用lodash/下划线的建议)。免责声明:我为 lodash 4 代码库做出了贡献。

我最初的答案(显然飞过很多人的头)如下:

我从下划线.js转码:

['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'].forEach( 
    function(name) { 
        window['is' + name] = function(obj) {
              return toString.call(obj) == '[object ' + name + ']';
    }; 
});

这将定义isString,isNumber等。


在 Node.js 中,这可以作为一个模块实现:

module.exports = [
  'Arguments',
  'Function', 
  'String', 
  'Number', 
  'Date', 
  'RegExp'
].reduce( (obj, name) => {
  obj[ 'is' + name ] = x => toString.call(x) == '[object ' + name + ']';
  return obj;
}, {});

[编辑]:用于描述函数和异步函数:Object.prototype.toString.call(x)

const fn1 = () => new Promise((resolve, reject) => setTimeout(() => resolve({}), 1000))
const fn2 = async () => ({})

console.log('fn1', Object.prototype.toString.call(fn1))
console.log('fn2', Object.prototype.toString.call(fn2))

模板简介:该模板名称为【如何确定变量是字符串还是 JavaScript 中的其他内容?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【JavaScript】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 208次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 03-11
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信图片 微信文章 html5 响应式 自适应 微信素材 微信模板 微信公众平台 单页式简历模板 企业网站
您可能会喜欢的其他模板