检查一个变量是否是JavaScript中的一个字符串
我怎样才能确定一个变量是一个字符串或JavaScript中的其他东西?
你可以使用typeof
运算符:
var booleanValue = true;
var numericalValue = 354;
var stringValue = "This is a String";
alert(typeof booleanValue) // displays "boolean"
alert(typeof numericalValue) // displays "number"
alert(typeof stringValue) // displays "string"
来自此网页的示例。 (虽然例子稍作修改)。
这里是typeof
运算符的参考。
这对我很有用:
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]"
仅供参考,Pablo Santa Cruz的答案是错误的,因为typeof new String("string")
是object
DRAX的答案是准确和实用的,并且应该是正确的答案(因为巴勃罗圣克鲁斯绝对是不正确的,我不会反对民众投票。)
但是,这个答案也是绝对正确的,实际上也是最好的答案(除了可能使用lodash /下划线的建议外)。 免责声明:我为lodash 4代码库做出了贡献。
我的原始答案(显然是飞过了许多头):
我从underscore.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;
}, {});
链接地址: http://www.djcxy.com/p/2785.html
上一篇: Check if a variable is a string in JavaScript
下一篇: Why would a JavaScript variable start with a dollar sign?