检查一个变量是否是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?