如何检查 var 在 JavaScript 中是否是字符串?

2022-08-30 01:16:10

如何检查 var 在 JavaScript 中是否是字符串?

我已经试过了,但它不起作用...

var a_string = "Hello, I'm a string.";

if (a_string typeof 'string') {
    // this is a string
}

答案 1

您很接近:

if (typeof a_string === 'string') {
    // this is a string
}

在相关的说明中:如果使用类型创建字符串,则上述检查将不起作用。有复杂的解决方案可以解决这个问题,但最好避免以这种方式创建字符串。new String('hello')Object


答案 2

typeof 运算符不是中缀(因此示例的 LHS 没有意义)。

您需要像这样使用它...

if (typeof a_string == 'string') {
    // This is a string.
}

请记住,是运算符,而不是函数。尽管如此,你会看到在野外被大量使用。这与 一样有意义。typeoftypeof(var)var a = 4 + (1)

另外,您也可以使用(相等比较运算符),因为两个操作数都是s(总是返回a),JavaScript被定义为执行我使用的相同步骤(严格比较运算符)。==StringtypeofString===

正如 Box9 所提到的,这不会检测到实例化的对象。String

你可以用它来检测....

var isString = str instanceof String;

jsFiddle.

...或。。。

var isString = str.constructor == String;

jsFiddle.

但这在多环境(想想s)中不起作用。windowiframe

你可以解决这个问题...

var isString = Object.prototype.toString.call(str) == '[object String]';

jsFiddle.

但同样,(正如Box9所提到的),您最好只使用文字格式,例如.Stringvar str = 'I am a string';

延伸阅读