如何确定变量是字符串还是 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()
网友回答:
这对我有用:
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】栏目查找您需要的精美模板。