vit*_*tto 166 javascript string variable-types
如何检查var是否是JavaScript中的字符串?
我试过这个但它不起作用......
var a_string = "Hello, I'm a string.";
if (a_string typeof 'string') {
// this is a string
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*ang 354
你很亲密:
if (typeof a_string === 'string') {
// this is a string
}
Run Code Online (Sandbox Code Playgroud)
在相关的注释:如果创建一个字符串,上面的检查将不起作用,new String('hello')
因为类型将是Object
.有很复杂的解决方案可以解决这个问题,但最好还是避免以这种方式创建字符串.
ale*_*lex 74
该typeof
运营商不中缀(所以你的榜样的LHS没有意义).
你需要像这样使用它......
if (typeof a_string == 'string') {
// This is a string.
}
Run Code Online (Sandbox Code Playgroud)
记住,typeof
是一个操作员,而不是一个功能.尽管如此,你会看到typeof(var)
在野外使用了很多.这就像有意义一样var a = 4 + (1)
.
此外,您也可以使用==
(等式比较运算符),因为两个操作数都是String
s(typeof
总是返回a String
),JavaScript定义为执行我使用的相同步骤===
(严格比较运算符).
你可以通过....检测到它
var isString = str instanceof String;
Run Code Online (Sandbox Code Playgroud)
...要么...
var isString = str.constructor == String;
Run Code Online (Sandbox Code Playgroud)
但这不适用于多种window
环境(思考iframe
).
你可以用...来解决这个问题
var isString = Object.prototype.toString.call(str) == '[object String]';
Run Code Online (Sandbox Code Playgroud)
但同样,(如Box9所提到的),你最好只使用文字String
格式,例如var str = 'I am a string';
.
Alf*_*ton 14
结合以前的答案提供了以下解决方案:
if (typeof str == 'string' || str instanceof String)
Run Code Online (Sandbox Code Playgroud)
要么
Object.prototype.toString.call(str) == '[object String]'
Run Code Online (Sandbox Code Playgroud)
以下表达式返回true:
'qwe'.constructor === String
Run Code Online (Sandbox Code Playgroud)
以下表达式返回true:
typeof 'qwe' === 'string'
Run Code Online (Sandbox Code Playgroud)
以下表达式返回false(原文如此!):
typeof new String('qwe') === 'string'
Run Code Online (Sandbox Code Playgroud)
以下表达式返回true:
typeof new String('qwe').valueOf() === 'string'
Run Code Online (Sandbox Code Playgroud)
最好和正确的方式(恕我直言):
if (someVariable.constructor === String) {
...
}
Run Code Online (Sandbox Code Playgroud)