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

2020/10/20 19:01 · javascript ·  · 0评论

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

我已经尝试过了,但是行不通...

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

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

您接近:

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

在相关说明中:如果使用创建的字符串new String('hello')Object代替,则上述检查将无效有很多复杂的解决方案可以解决此问题,但是最好避免以这种方式创建字符串。

typeof运营商不中缀(所以你的榜样的LHS没有意义)。

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

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

请记住,typeof是运算符,而不是函数。尽管如此,您会发现typeof(var)在野外经常使用它。这和一样有意义var a = 4 + (1)

此外,==由于两个操作数均为Strings(typeof 始终返回a String,因此您也可以使用(相等比较运算符),JavaScript被定义为执行与我使用的相同步骤===(严格比较运算符)。

Box9所述,这不会检测实例化的String对象。

您可以使用...进行检测。

var isString = str instanceof String;

jsFiddle

...要么...

var isString = str.constructor == String;

jsFiddle

但这在多window环境下不起作用(认为iframe)。

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

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

jsFiddle

但是,再次(如Box9所述),最好只使用文字String格式,例如var str = 'I am a string';

进一步阅读

结合之前的答案可提供以下解决方案:

if (typeof str == 'string' || str instanceof String)

要么

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

以下表达式返回true

'qwe'.constructor === String

以下表达式返回true

typeof 'qwe' === 'string'

下面的表达式返回false(sic!):

typeof new String('qwe') === 'string'

以下表达式返回true

typeof new String('qwe').valueOf() === 'string'

最佳和正确的方法(恕我直言):

if (someVariable.constructor === String) {
   ...
}

现在,我相信最好使用typeof()的函数形式,以便...

if(filename === undefined || typeof(filename) !== "string" || filename === "") {
   console.log("no filename aborted.");
   return;
}

在所有情况下检查null或未定义

if (a_string && typeof a_string === 'string') {
    // this is a string and it is not null or undefined.
}

我的个人方法似乎适用于所有情况,它正在测试是否只存在字符串的成员。

function isString(x) {
    return (typeof x == 'string' || typeof x == 'object' && x.toUpperCase && x.substr && x.charAt && x.trim && x.replace ? true : false);
}

请参阅:http//jsfiddle.net/x75uy0o6/

我想知道这种方法是否有缺陷,但多年来一直为我服务。

本文地址:http://javascript.askforanswer.com/ruhejianchavarshifouweijavascriptzhongdezifuchuan.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!